نمایش نتایج: از شماره 1 تا 10 , از مجموع 10

موضوع: اجرای یک فایل با کرون جاب هر 5 ثانیه

  1. #1
    کاربر اخراج شده
    تاریخ عضویت
    Aug 2017
    نوشته ها
    37
    تشکر تشکر کرده 
    43
    تشکر تشکر شده 
    6
    تشکر شده در
    5 پست

    Question اجرای یک فایل با کرون جاب هر 5 ثانیه

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

    من توی وردپرس یه کرون جاب داخلی تعریف کردم که هر 5 ثانیه اجرا میشه ولی همون طور که میدونید اگر هر 5 ثانیه یه بازدید از سایت انجام نشه از اجرای هر 5 ثانیه هم خبری نیست. بنابراین تصمیم گرفتم اجرای کرون جاب وردپرس با هر بازدید رو با قرار داد ثابت زیر در wp-config.php غیرفعال کنم.

    کد PHP:
    define('DISABLE_WP_CRON'true); 
    و با خودم گفتم که فایل wp-cron.php رو با کرون جاب اجرا میکنم ولی بی خبر از اینکه کرون جاب ها هر دقیقه اجرا میشن بعد طی یه سری سرچ این صفحه رو پیدا کردم اینجا نوشته تابع fopen به صورت موازی با سایر کدها اجرا میشه.

    آیا واقعا اینطوریه؟

    مثلا کد زیر رو در نظر بگیرید:


    کد PHP:
    fopen('http://doamin.com/wp-cron.php?doing_wp_cron''r');
    sleep(5);
    fopen('http://doamin.com/wp-cron.php?doing_wp_cron''r'); 

    اگر کد بالا رو در یک فایل php بذاریم و با کرون جاب اجرا کنیم اجرای فایل 5 ثانیه طول میکشه؟

    تشکر بابت پاسخ هاتون

    ویرایش توسط mehran-b : August 15th, 2017 در ساعت 01:10

  2. # ADS




     

  3. #2
    عضو جدید ___.Hrs.___ آواتار ها
    تاریخ عضویت
    Jun 2011
    محل سکونت
    تهران
    نوشته ها
    69
    تشکر تشکر کرده 
    6
    تشکر تشکر شده 
    203
    تشکر شده در
    151 پست

    پیش فرض پاسخ : اجرای یک فایل با کرون جاب هر 5 ثانیه

    اجرای کرون جاب اونم هر ۵ ثانیه امری غیر منطقی هست !

    زیرا فشار بسیاری به سرور میاره

    اگر امری منطقی بود خود سی پنل در پلن های پیشفرض ثانیه رو هم قرار میداد

  4. تعداد تشکر ها از ___.Hrs.___ به دلیل پست مفید


  5. #3
    کاربر اخراج شده
    تاریخ عضویت
    Aug 2017
    نوشته ها
    37
    تشکر تشکر کرده 
    43
    تشکر تشکر شده 
    6
    تشکر شده در
    5 پست

    پیش فرض پاسخ : اجرای یک فایل با کرون جاب هر 5 ثانیه

    نقل قول نوشته اصلی توسط ___.Hrs.___ نمایش پست ها
    اجرای کرون جاب اونم هر ۵ ثانیه امری غیر منطقی هست !

    زیرا فشار بسیاری به سرور میاره

    اگر امری منطقی بود خود سی پنل در پلن های پیشفرض ثانیه رو هم قرار میداد
    شما درست میگید فشار زیادی میاره به سرور ولی بنده الان احتیاج دارم که هر 5 ثانیه یک تابع رو اجرا کنم.

  6. #4
    عضو جدید ___.Hrs.___ آواتار ها
    تاریخ عضویت
    Jun 2011
    محل سکونت
    تهران
    نوشته ها
    69
    تشکر تشکر کرده 
    6
    تشکر تشکر شده 
    203
    تشکر شده در
    151 پست

    پیش فرض پاسخ : اجرای یک فایل با کرون جاب هر 5 ثانیه

    نقل قول نوشته اصلی توسط mehran-b نمایش پست ها
    شما درست میگید فشار زیادی میاره به سرور ولی بنده الان احتیاج دارم که هر 5 ثانیه یک تابع رو اجرا کنم.
    نگاهی به اینجا بندازید

    https://stackoverflow.com/questions/...conds-in-linux

    از طریق sleep این کار شدنی هست

  7. تعداد تشکر ها از___.Hrs.___ به دلیل پست مفید


  8. #5
    عضو دائم T.Toosi آواتار ها
    تاریخ عضویت
    Jun 2015
    نوشته ها
    1,071
    تشکر تشکر کرده 
    278
    تشکر تشکر شده 
    2,936
    تشکر شده در
    1,329 پست

    پیش فرض پاسخ : اجرای یک فایل با کرون جاب هر 5 ثانیه

    سلام، اگر ورودی fopen یک آدرس بدید یک Request به آدرس میفرسته که منتظر پاسخ ـش نمیمونه (با Curl هم میتونید اینکارو بکنید) برای همین میشه برای parallel استفاده کرد. برای اجرای هر 5 ثانیه هم باید یم حلقه بینهایت بزنید سپس یک Request با Curl یا همین Fopen بفرستید و بعدش 5 ثانیه Sleep کنید.

  9. تعداد تشکر ها ازT.Toosi به دلیل پست مفید


  10. #6
    کاربر اخراج شده
    تاریخ عضویت
    Aug 2017
    نوشته ها
    37
    تشکر تشکر کرده 
    43
    تشکر تشکر شده 
    6
    تشکر شده در
    5 پست

    پیش فرض پاسخ : اجرای یک فایل با کرون جاب هر 5 ثانیه

    نقل قول نوشته اصلی توسط T.Toosi نمایش پست ها
    سلام، اگر ورودی fopen یک آدرس بدید یک Request به آدرس میفرسته که منتظر پاسخ ـش نمیمونه (با Curl هم میتونید اینکارو بکنید) برای همین میشه برای parallel استفاده کرد. برای اجرای هر 5 ثانیه هم باید یم حلقه بینهایت بزنید سپس یک Request با Curl یا همین Fopen بفرستید و بعدش 5 ثانیه Sleep کنید.
    شما مطمئنید fopen منتظر نتیجه نمیمونه؟ نمیشه یه جوری تست کرد؟

    حلقه بی نهایت رو اینطوری زدم:


    کد PHP:
    while(true) {
    fopen('http://doamin.com/wp-cron.php?doing_wp_cron''r');
    sleep(5);


    درسته؟

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

  11. #7
    عضو دائم T.Toosi آواتار ها
    تاریخ عضویت
    Jun 2015
    نوشته ها
    1,071
    تشکر تشکر کرده 
    278
    تشکر تشکر شده 
    2,936
    تشکر شده در
    1,329 پست

    پیش فرض پاسخ : اجرای یک فایل با کرون جاب هر 5 ثانیه

    نقل قول نوشته اصلی توسط mehran-b نمایش پست ها
    شما مطمئنید fopen منتظر نتیجه نمیمونه؟ نمیشه یه جوری تست کرد؟

    حلقه بی نهایت رو اینطوری زدم:


    کد PHP:
    while(true) {
    fopen('http://doamin.com/wp-cron.php?doing_wp_cron''r');
    sleep(5);


    درسته؟

    بعد اصلا این فایلی که توش این حلقه هست رو اصلا باید با کرون جاب اجراش کنم یا خیر؟
    داخل اون سایته که آدس دادید همچین چیزی نوشته اما تا حالا خودم تست نکردم، داخل wp-cron.php یک حلقه بینهایت بزارید بعد یک fopen بزنید ببنید منتظر پاسخ میمونه یا نه، با Curl میتونید Timeout تنظیم کنید درخواست را بفرسته و منتظر پاسخ نماند که به شکل زیر میشود :

    کد PHP:
    while(true) {
    $ch curl_init('http://doamin.com/wp-cron.php?doing_wp_cron');
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    curl_setopt($chCURLOPT_TIMEOUT_MS10);
    $data curl_exec($ch);
    curl_close($ch);
    sleep(5);

    این 10 میلی ثانیه هم مدت زمان پاسخ سرور شما به Request هست.

  12. تعداد تشکر ها ازT.Toosi به دلیل پست مفید


  13. #8
    کاربر اخراج شده
    تاریخ عضویت
    Aug 2017
    نوشته ها
    37
    تشکر تشکر کرده 
    43
    تشکر تشکر شده 
    6
    تشکر شده در
    5 پست

    پیش فرض پاسخ : اجرای یک فایل با کرون جاب هر 5 ثانیه

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

    فقط سه نکته میمونه اونم اینکه اون مقدار timeout توی Curl ده میلی ثانیه است که بعیده توی 10 میلی ثانیه سرور جواب بده اونو باید خودم افزایشش بدم؟

    مورد بعدی هم اینکه فایل php ای که توش حلقه بی نهایت هست رو باید در ابتداش





    کد PHP:
    ignore_user_abort(true);
    set_time_limit(0); 

    رو قرار بدم درسته؟

    تشکر

  14. #9
    عضو دائم T.Toosi آواتار ها
    تاریخ عضویت
    Jun 2015
    نوشته ها
    1,071
    تشکر تشکر کرده 
    278
    تشکر تشکر شده 
    2,936
    تشکر شده در
    1,329 پست

    پیش فرض پاسخ : اجرای یک فایل با کرون جاب هر 5 ثانیه

    فقط سه نکته میمونه اونم اینکه اون مقدار timeout توی Curl ده میلی ثانیه است که بعیده توی 10 میلی ثانیه سرور جواب بده اونو باید خودم افزایشش بدم؟
    اینو باید تست کنید ببنید حداقل چقدر طول میکشه سرورـتون پاسخ بده بعد عدد ـش را زیاد کنید. (یک file_put_content یا متد mail() بزارید داخل wp-cron.php بعد حلقه بالا را اجرا کنید ببینید اگر روی 10 میلی فایل ساخت یا ایمیل فرستاد یعنی سرور پاسخ گرفته اگر نه عدد را زیاد کنید)

    مورد بعدی هم اینکه فایل php ای که توش حلقه بی نهایت هست رو باید در ابتداش
    کد PHP:
    ignore_user_abort(true);
    set_time_limit(0); 
    این ها را هم قرار دهید اما نکته ای که هست بررسی کنید Execution time در PHP بی نهایت باشه در غیر این صورت به Timeout میخورید و کد بالا جواب شما را نخواهد داد.

  15. تعداد تشکر ها از T.Toosi به دلیل پست مفید


  16. #10
    عضو انجمن mojtaba05 آواتار ها
    تاریخ عضویت
    Apr 2015
    نوشته ها
    200
    تشکر تشکر کرده 
    120
    تشکر تشکر شده 
    164
    تشکر شده در
    140 پست

    پیش فرض پاسخ : اجرای یک فایل با کرون جاب هر 5 ثانیه

    سلام
    از setInterval جاوااسکریپت هم می تونید استفاده کنید، یه درخواست آجاکس داخل setInterval بنویسید تا در هر 5 ثانیه درخواست به سرور ارسال بشه.

  17. تعداد تشکر ها از mojtaba05 به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •