PDA

View Full Version : تایمر



arenaw
سه شنبه 26 اسفند 1393, 10:28 صبح
سلام دوستان

توی یه برنامه، حدودا ۲۰ ۳۰ تا کلاینت حضور دارن. این تعداد کلاینت در هر روز ۱ ساعت وقت استراحت دارن که درخواست وقت استراحتشون به سرور ند فرستاده میشه و ند با setTimeout وقتشون رو محسابه میکنه.
پس یه چیزی حدود ۲۰ ۳۰ تا تایمر موقع استراحت کلاینت ها سمت سرور در حال شمارش هستن.
تا اینجای کار رو انجام دادم...

زمان باقی مونده از وقت استراحت و یه سری مشخصه های دیگه این کلاینت ها، هر روز باید ریست بشه و مقدارهاشون توی دیتابیس نگه داری بشه.
حالا سوالم اینه:

بیام دوباره یه تایمر بذارم که درست سر ساعت ۱۲ شب این کارایی که میخوام رو بکنه.
یا اینکه یه سرور دیگه (مثل اسکژول لینوکس)، یه ایونتی رو امیت کنه و من سمت سرور با شنیدن اون ایونت این کارهارو انجام بدم.

میخوام ببینم تایمر جاوااسکریپت دقیق کار میکنه؟ امکان نداره به دلیل سنگین بودن و تعداد زیاد تایمر ها تو یه اسکریپت، اشتباه کنه؟

arenaw
یک شنبه 16 فروردین 1394, 13:15 عصر
جواب رو خودم پیدا کردم، گفتم اینجا هم بذارم تا به دوستانی که احیانا سوال مشابهی داشتن، کمک بشه.

ماژول‌های node-cron (https://github.com/ncb000gt/node-cron) و node-schedule (https://github.com/node-schedule/node-schedule) همین کار رو انجام میدن. به این صورت که یه تاریخ رو میگیرن و فانکشن شما رو توی اون تاریخ اجرا میکنن.
فرقش با مورد دومی که توی سوال نوشتم، اینه که مدیریت و تنظیمات و ... داخل خود کدهای node انجام میشه.

cups_of_java
دوشنبه 17 فروردین 1394, 11:29 صبح
برای اینکه خودتون درگیر کد زمانبندی و ... نشید تو برخی موارد می تونید خیلی راحت از crontab در لینوکس استفاده کنید و تو زمانی که میخواید اسکریپت کوچیک ند خودتون رو اجرا کنید و اون هم کارتون رو انجام بده.

اگه نیاز به تضمین برای اجرای تسک ها در زمان مشخص دارید و یا میخواید که تسک ها توزیع شده انجام بشن و یا اینکه امکان سعی مجدد در حین خطا داشته باشن می تونید از ماژول Kue هم استفاده کنید.