نقل قول نوشته شده توسط یوسف زالی مشاهده تاپیک
ببینید اگر سرویس دهنده دیتابیس شما مای اس کیو ال هست، یا اس کیو ال سرور، خب این دو خودشون مدیریت همزمانی رو انجام می دند.
پیشنهاد می کنم به این روش فکر کنید:
همه پردازش ها انجام شوند، و برای پردازش هایی که بیش از ظرفیت است، پیام عدم ثبت فرستاده بشه.
فرض کنید ده تا ظرفیت دارید، صد نفر می رن همزمان ثبت نام کنند؛ شما می تونید این تعداد رو هم از طریق اتصالات همزمان به سرور بانک داده، محدود کنید (روش پر دردسر و نامناسب)، هم می تونید در زمان ثبت با استفاده از قفل گذاری مناسب روی جداول اول تعداد رو ببینید بعد تصمیم بگیرید، در این زمان تمام درخواست ها wait می مونند. (روش بهتر)

نیازی به تایمر نیست، کافیه در کوئری های دیتابیس (یا اس پی ها) اون رو درست پیاده کنید.

با این روش مطمئن می شید که تعداد از حد مجاز هرگز بالاتر نخواهد رفت.
مشکل در مدیریت بانک اطلاعاتی نیست . مشکل رو خیلی ساده توضیح دادم زمانی که کاربری درخواستی رو میفرسته به وبسرویس ، وبسرویس ارتباطی با سرور دیگری از طریق سوکت برقرار میکنه و داده ای رو ارسال و پاسخی رو دریافت میکنه . تا اینجا هیچ مشکلی نیست . حالا اگر چند درخواست همزمان به وبسرویس ارسال بشه به چه صورتی این درخواست هارو مدیریت کنیم ؟
ما مشلمون با پیاده سازی این قسمت هست که به چه صورتی درخواستها رو مدیریت کنیم چون همزمان امکان اتصال به سوکت سرور دیگر رو نداریم و نمیتونیم چندین درخواست رو همزمان به سکوت ارسال و پاسخ رو دریافت کنیم و باید به ترتیب این کار انجام بشه و وقتی عملیات کاربر شماره یک تمام شد عملیات کاربر شماره 2 شروع بشه.
اگه فرض اینکه idhttpserver درخواست جدید رو تا زمانی که درخواست قبلی به پایان نرسه قبول نمیکنه درست باشه ما چطوری درخواست هامون رو با php به این وبسرویس ارسال کنیم و درخواست ها رو به چه صورتی در لیست قرار بدیم و بعد از پردازش درخواستها ، پاسخ های دریافتی از سوکت رو به چه صورتی به کاربر ارسال کنیم.
این فرایند رو میخواهیم پیاده سازی کنیم .
در حالت تک کاربره ، کاربر با curl مقداری رو به وبسرویس ارسال میکنه و درخواست با IdTCPClient به سوکت سرور دیگه ارسال میشه و پاسخ دریافتی از طریق رویداد onCommandGet کامپوننت idhttpserver به کاربر ارسال میشه.

با تشکر از صبر و پاسختون