PDA

View Full Version : اجرا دستور تکراری



pejman_view
چهارشنبه 04 دی 1392, 20:12 عصر
من برنامه نویس یک شرکت بازیهای آنلاین هستم
به یک مشکل برخوردم که به شرح زیر میباشد و حل نمیشود لطفا از دوستان میخوام سریع راهنمایی کنند
مشکل فنی بر خوردم دیتابیس بازی همانطور که می دانید بایستی هر 1 ثانیه آپدیت بشه برای اینکه جنگ ها انجام بشود و منابع آپدیت شود و هزاران کار دیگر

و همانطور که می دانید کرون هم کمتر از یک دقیقه نداره بنابراین ما حلقه هایی نیاز داریم که sleep بخورن و کار کرون جاب یک ثانیه ای بخورد. حالا مشکل من از اینجا شروع شده که بعضی از کاربرا می گن جنگ ها بعضی اوقات دو بار اتفاق می افتد و این مشکل تنها از یکبار بروز می کند که در کسری از ثانیه دو تا کلاس با هم فراخوانی شود. ما برای اینکه از این مشکل جلوگیری کنیم اومدیم تو دیتابیس دو یک فیلد تعریف کردیم که اگر 0 بود کرون جاب های دیگر بتوانند کار کنند و اگر یک بود نتوانند و بصورت شرط اول حلقه گذاشتیم. حالا با این توجه باز هم اتفاق می افتد می خواستم ببینم راه بهتری برای جلوگیری از چندبار اجرا شدن یک دستور هست یا خیر؟

a_mzadeh
پنج شنبه 05 دی 1392, 22:02 عصر
یک روش این هست که شما تو فایلی که sleep داره و نقش cron رو داره ایفا می‌کنه، اول فایل یک دستور بذارید که زمان فعلی رو داخل یک فایل temp ذخیره کنه. هر بار که این فایل اجرا میشه، همون ابتدا فایل مربوط به زمان رو میخونه و اگر اختلاف اون با زمان جاری کمتر از مقدار sleep باشه، معلوم میشه که این فایل از جای دیگه‌ای در حال اجرا هست و شما میتونید همونجا اجرای یکی از این فایل‌ها رو خاتمه بدید.