PDA

View Full Version : یه چیز شبیه Cron job می خام



mohammad_amini
دوشنبه 03 اسفند 1394, 17:43 عصر
سلام

من سیستمی دارم طراحی می کنم که قراره سر ساعت ها و دقیقه های مختلف به صورت اتوماتیک کار خاصی رو انجام بده...همه CronJob رو پیشنهاد دادند...

مشکل این جاست که تعداد تسک هایی که قرار انجام بشه زیاده و انجام این کار با CroJob سربار زیادی برای سرور به بار میاره...برای این کار پیشنهاد شما چیه؟؟؟:چشمک::چشمک::متفکر::مت کر::متفکر:

ضمن این که امکان هر تسک در ساعت و دقیقه ی منحصر به فردی اجرا بشه.......یعنی وقت ها ثابت نیست.:چشمک::چشمک::چشمک::چشمک:

plague
دوشنبه 03 اسفند 1394, 18:28 عصر
با کرون جاب اجرا کن
همون اول کد تاریخ و ساعت فعلی رو بگیر اگه با اون شرایط منحصر به فرد مورد نظر جور در نیومد کد رو متوقف کن

joker
سه شنبه 04 اسفند 1394, 07:11 صبح
اگه درست منظورتون را متوجه شده باشم مثلا شما 500 تا جاب دارید که راس ساعت 10:10 باید اجرا بشه و 1000 تا جاب هم دارید راس ساعت 17:45 باید اجرا بشن
نمیخواین 1500تا جاب توی سیستم تعریف کنید که هر 1 دقیقه یکبار چک بشن
شما کلا یک جاب به عنوان واسط و تصمیم گیر برای اجرای بقیه تعریف کنید که یک دقیقه یکبار اجرا بشه ، به ساعت مورد نظر که رسید اون دسته 500تایی را توسط همین فایل صدا بزنید.

mohammad_amini
سه شنبه 04 اسفند 1394, 18:30 عصر
اگه درست منظورتون را متوجه شده باشم مثلا شما 500 تا جاب دارید که راس ساعت 10:10 باید اجرا بشه و 1000 تا جاب هم دارید راس ساعت 17:45 باید اجرا بشن
نمیخواین 1500تا جاب توی سیستم تعریف کنید که هر 1 دقیقه یکبار چک بشن
شما کلا یک جاب به عنوان واسط و تصمیم گیر برای اجرای بقیه تعریف کنید که یک دقیقه یکبار اجرا بشه ، به ساعت مورد نظر که رسید اون دسته 500تایی را توسط همین فایل صدا بزنید.


تقریبا شما مشکل من رو بهتر متوجه شدید....ولی با این تفاوت که جاب ها الزاما دسته ای نیستند...فرض کنید 10 تا از جاب ها ساعت 10:23، 30 از جاب ها 13:35 و ... شما یه نمونه ی چند هزار تایی در نظر بگیرید که امکان داره فقط دسته های کمی از اون ها رو بشه با هم اجرا کرد و بقیه ی جاب ها با هم اختلاف های زمان اجرا دارن....



ممنون از توجه هر دوی شما...

Unique
پنج شنبه 06 اسفند 1394, 09:35 صبح
لی با این تفاوت که جاب ها الزاما دسته ای نیستند...فرض کنید 10 تا از جاب ها ساعت 10:23، 30 از جاب ها 13:35 و ... شما یه نمونه ی چند هزار تایی در نظر بگیرید که امکان داره فقط دسته های کمی از اون ها رو بشه با هم اجرا کرد و بقیه ی جاب ها با هم اختلاف های زمان اجرا دارن.
جناب جوکر کامل گفتن ، منظورشون از فایل واسط که بدین به Cronjob همینه ، در واقع شما یک Cronjob دارین که فایل واسط با وظیفه اجرای task ها و مدیریتشون را صدا میزنه. حالا اینکه شما این Task ها را چطور مدیریت ،‌ مرتب یا همزمان اجرا کنید بر عهده منطق فایل شما هست و اگه توی همزمانی و سربار سیستم یا کم آوردن منابع مشکل دارین این دیگه مشکل از مدیریت Task ها و کمبود های سخت افزاری میشه و نیاز نیست دنبال جایگزین Cronjob باشین.

البته برخی مواقع کلا ما سناریو را اشتباه تحلیل میکنیم و به همین خاطر به مشکل میخوریم. شاید بد نباشه بگین اصل موضوع چیه تا دوستان بیشتر راهنمایی کنن.

mohammad_amini
جمعه 07 اسفند 1394, 08:48 صبح
جناب جوکر کامل گفتن ، منظورشون از فایل واسط که بدین به Cronjob همینه ، در واقع شما یک Cronjob دارین که فایل واسط با وظیفه اجرای task ها و مدیریتشون را صدا میزنه. حالا اینکه شما این Task ها را چطور مدیریت ،‌ مرتب یا همزمان اجرا کنید بر عهده منطق فایل شما هست و اگه توی همزمانی و سربار سیستم یا کم آوردن منابع مشکل دارین این دیگه مشکل از مدیریت Task ها و کمبود های سخت افزاری میشه و نیاز نیست دنبال جایگزین Cronjob باشین.

البته برخی مواقع کلا ما سناریو را اشتباه تحلیل میکنیم و به همین خاطر به مشکل میخوریم. شاید بد نباشه بگین اصل موضوع چیه تا دوستان بیشتر راهنمایی کنن.

یک سری تسک وجود داره که به هر کدوم از تسک ها اعضایی تعلق می گیره. هر کدوم از اعضا مشخصات خودشون از جمله ایمیل و ... رو دارند.


کل کار من اینه که یه سیستم دارم که تو یه قسمتاز اون تسک هایی تعریف میشن. برای هر تسک، کاربر به وجود آورنده ی تسک تعیین می کنه که سر اوقات مشخص به اعضای تسک Alarm فرستاده بشه. حالا تعداد این تسک ها اگه زیاد باشه CronJob به سختی جواب می ده. یعنی باید CronJob رو گذاشت روی هر دقیقه یک بار یا همین حدودها....

یک نفر هم پیشنهاد Threading رو داد... اما من خوب ازش سر در نمیارم.

امیدوارم که منظورم رو خوب ادا کرده باشم...

nazanin_asadi_1
شنبه 08 اسفند 1394, 09:56 صبح
کاری به تسک های شما ندارم چون چیزی زیادی از سوال و یا مشکل شما رو متوجه نشدم

من برای یکی از پروژه هام که مشتریها تاریخ و ساعت یادآوری رو مشخص میکردن تا سر اون تاریخ واسشون sms فرستاده بشه یا از طریق سایت پیغامی ایمیلی به شخصی ارسال بشه به این صورت عمل کردم و الان دو ساله بدون مشکل داره کار میکنه

یک جدول کارها درست کردم که هر کسی هر درخواستی داشت در اون جدول ثبت میکنم که این درخواست میتونه ارسال sms یا ایمیل یا پیغام داخل سایت باشه
مثلا کاربر تنظیم میکنه هر روز ساعت 2:00 واسه یه نفر sms فرستاده بشه یا کاربر دیگه ای مشخص میکنه هر هفته یه کاری انجام بشه
یا مثلا این امکان هست که هر کاربر تاریخ تولد نفرات رو توی سایت ثبت میکنه و واسه یادآوری sms رو فعال میکنه و سر تاریخ مشخص شده یادآوری میشه

برای انجام این کار یه کرونجاب تنظیم کردم که هر دقیقه یک فایل رو اجرا میکنه
توی این فایل بر اساس ساختار زمانی که مشخص کردم برای هر عمل ، برنامه میاد رکوردهایی که واجد شرایط هستن رو انتخاب میکنه و بر اساس موجودی وظایف انتخاب شده رو انجام میده مثلا یکی sms داره یکی ایمیل داره یا هر چیز

برای این کار یک جدول و یک فایل جواب داده واسه من


با توجه به سوال شما فکر کنم این روش واسه شما هم جواب بده
باز اگه جوابتون رو نگرفتین بیشتر توضیح بدین و مشخص کنید که دنبال چه هستین تا بهتر راهنمایی بشین

Unique
شنبه 08 اسفند 1394, 17:55 عصر
قطعا اگه همه را بخوای توی یک cron job و یک فایل انجام بدی دردسر داره، شما باید بتونی برای تسک ها job توی crontab ایحاد ، ویرایش و حذف کنی. برای این کار نیاز به یک vps داری یا یک سرویس آنلاین که api داشته باشه. اگه vps داشته باشه با یک crontab manager (https://github.com/MediovskiTechnology/php-crontab-manager) میتونی راحت برای هر task یک cronjob ست کنی.