وب سایت ها می توانند کارهای برنامه ریزی شده را با Cron اجرا کنند

ساعت

ما تعدادی سیستم نظارتی زائد در کار داریم که به طور منظم فرایندها را اجرا می کنند. بعضی ها هر دقیقه ، بعضی ها هر شب بسته به کاری که انجام می دهند می دوند. به عنوان مثال ، ممکن است اسکریپتی را اجرا کنیم که تمام مشتریانی را که در مدت 30 روز خریدی انجام نداده اند برای ارسال کوپن به آنها صادر کند.

به جای تلاش برای پیگیری دستی همه این موارد ، ایجاد مشاغلی که به طور خودکار برنامه ریزی و اجرا می شوند بسیار آسان تر است. در سیستم های مبتنی بر یونیکس ، این امر با Cron انجام می شود. برای شما افرادی که می دانید چه کاری انجام می دهید ، در صورت بیرون آوردن هرگونه اطلاعات نادرست ، به من و خوانندگان آموزش دهید.

جای تأسف است اما توسعه دهنده وب معمولی به هیچ وجه با Cron آشنا نیست. حتی اگر چنین باشد ، شرکتهای میزبان وب اغلب دسترسی به Cron را فراهم نمی کنند یا از آن پشتیبانی نمی کنند. میزبان من یکی از آنهاست - آنها به شما اجازه می دهند از آن استفاده کنید ، اما آنها از آن پشتیبانی نمی کنند.

Cron چیست؟

تاج برای کلمه یونانی Chronos ، معنی شده است زمان. Cron در یک حلقه مداوم اجرا می شود تا وظایفی را که توسط Crontab جمع شده است (شاید به همین دلیل نامگذاری شده باشد) اجرا کند برگولاتور این کارها معمولاً به عنوان Cronjobs نامیده می شوند و می توانند اسکریپت ها را در سایت شما ارجاع دهند.

توضیح نمودار Cron

چگونه Crontab را تنظیم کنم

اجرای Cron برای اجرای واقعی می تواند چالش برانگیز باشد ، بنابراین در اینجا چیزی است که من آموخته ام و چگونه این کار را انجام داده ام اگر مکید:

  1. من اسکریپت خود را تنظیم کردم تا توییتر را بررسی کنم API ببینم کسی جواب داده ifsuck. من آن پیام ها را با پیام هایی که قبلاً در وب سایت ذخیره کردم مقایسه کردم و پیام های جدیدی را وارد کردم.
  2. هنگامی که اسکریپت کار می کرد ، من مجوزهای کاربر را برای اجرای اسکریپت فعال کردم (744) و مرجع اسکریپت را به پرونده Cronjob خود اضافه کردم - بعداً در مورد این اطلاعات بیشتر.
  3. سپس مجبور شدم از طریق SSH وارد وب سایت خود شوم. در Mac ، ترمینال باز می شود و تایپ می شود نام کاربری SSH@domain.com جایی که نام کاربری نام کاربری بود که می خواستم از آن استفاده کنم و دامنه آن وب سایت بود. سپس از من خواسته شد و رمز عبور را دادم.
  4. سپس سعی کردم اسکریپت را مستقیماً از خط فرمان با تایپ کردن نام فایل و مسیر نسبی در سرور اجرا کنم: /var/www/html/myscript.php
  5. هنگامی که به درستی کار کردم ، کد Unix لازم را در خط اول پرونده اضافه کردم: #! / usr / bin / php -q . من معتقدم این به سادگی به یونیکس می گوید که از PHP برای اجرای اسکریپت استفاده کند.
  6. در خط فرمان Terminal ، تایپ کردم کرونتاب (دیگران ممکن است نیاز به تایپ داشته باشند crontab -e با) و enter را بزنید ... و این تنها چیزی بود که لازم بود!

نحو برای پرونده Cronjob شما

با توجه به شماره 2 بالا ، Cron از یک طرح هوشمندانه برای تعیین زمان اجرای اسکریپت های شما استفاده می کند. در واقع ، شما واقعاً می توانید این را در Cronfile خود کپی و پیست کنید (در میزبان من ، در آن قرار دارد / var / spool / cron / با نام پرونده همان نام کاربری من است).

# + —————- دقیقه (0 - 59)
# | + ————- ساعت (0 - 23)
# | | + ———- روز ماه (1 - 31)
# | | | + ——- ماه (1 - 12)
# | | | | + —- روز هفته (0 - 6) (یکشنبه = 0 یا 7)
# | | | | |
* * * * * /var/www/html/myscript.php

موارد بالا هر دقیقه اسکریپت من را اجرا می کند. اگر فقط می خواستم هر ساعت یک بار اجرا شود ، فقط چند دقیقه بعد از ساعت که آرزو می کنم اجرا شود را قرار می دهم ، بنابراین اگر در 30 دقیقه بود:

30 * * * * /var/www/html/myscript.php

مطمئن شوید که مجوزهای این پرونده را به عنوان قابل اجرا نیز تنظیم کرده اید! متوجه شدم که نحو ، مجوزها و اجرای crontab از پنجره Terminal مهمترین عوامل هستند. هر بار که پرونده را دوباره ذخیره می کردم ، مجوزهای خود را که نیاز به تنظیم مجدد داشت نیز پیدا می کردم!

به روزرسانی: اگر می خواهید اطمینان حاصل کنید که مشاغل در حال اجرا هستند ، یک راه ساده این است که یک قسمت پایگاه داده را با آخرین باری که اسکریپت اجرا شده به روز کنید. اگر به ندرت اتفاق می افتد ، ممکن است فقط ایمیلی را که برای خودتان ارسال شده ارسال کنید.

منابع اضافی Cron:

چه تعداد شغل را می توانید با استفاده از Cron به طور خودکار انجام دهید؟

8 نظرات

  1. 1

    Well covered article on setting up a cron, for someone new to crojobs, the most difficult part in setting up a cron is to figure out the cronjob execution interval, and it is quite commong to get a wrong interval at first try. If your cronjobs are time sensitive, it is good to include some codes in the script to echo out status so that you are kept inform of the job execution status.

  2. 2

    سلام داگ ،

    A couple of things to consider when working with cron jobs.

    First, after a few dozen, you’ll wish you had a UI, a database and english-looking syntax 😉

    Second, cron will fire the job at the specified time, regardless of whether the previous invocation of the job completed. So running a job once a minute that takes 2 minutes will quickly lead to lots of the same job running.

    Next, there is next to no error reporting when something goes wrong, so you’ll need to add your own error reporting.

    I’ve addressed these in a couple of ways:
    – have the application triggered via cron look in a database to determine what needs to be run. Run it once a minute or hour depending on what you want
    – have each script create a ‘lock’ file in /tmp and if it exists, don’t start again, this prevents duplicate jobs if you don’t want them
    – if the script finds the lock file older than 1 hour (or whatever suggests you died) send an email alert
    – have the script send email on failure of the job so you know something went wrong
    – look at frameworks like Flux or commercial schedulers when your needs get beyond a few scripts

    کریس

  3. 4

    I’ll also add that on most Linux/Unix systems, “crontab -e” is what you use to edit your crontab. I think your host (Jumpline) is using a modified version for security reasons.

  4. 5

    I still remember the first day I met Cronnie. I had heard things about her, that she was dependable, always on time, but sometimes a bit confusing about her intentions.

    I found this to be true as she was a complete mystery to me at first. After asking around about her, I caught on fairly quickly as to how she liked to operate. Now, I can’t imagine a day going by without her in my life. She makes the mundane exciting, and lifts many burdens off my shoulders.

    In all seriousness, I feel like I’ve only scratched the surface with what I can automate with cron jobs. They truly are a developers best friend. If you are using someone like CPanel to manage your server, it provides a much more friendly interface to create crons. Complete with drop down menus for minute, hour, day, month, etc. that builds the cron line for you.

  5. 7

شما چه فکر میکنید؟

این سایت از Akismet برای کاهش هرزنامه استفاده می کند. بدانید که چگونه نظر شما پردازش می شود.