وب سایت ها می توانند کارهای برنامه ریزی شده را با 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

    مقاله خوبی در مورد تنظیم cron ، برای شخصی که تازه کار در زمینه های croob است ، کاملاً پوشش داده شده است ، دشوارترین قسمت در تنظیم cron ، تشخیص فاصله اعدام cronjob است و بدست آوردن یک فاصله اشتباه در اولین تلاش کاملاً نامشخص است. اگر کارهای هم زمان شما حساس به زمان است ، بهتر است برخی از کدها را در اسکریپت بگنجانید تا وضعیت را تکرار کنید تا از وضعیت اجرای شغل مطلع شوید.

  2. 2

    سلام داگ ،

    در کار با cron jobs چند نکته را باید در نظر گرفت.

    ابتدا ، بعد از چند ده نفر ، آرزو می کنید که یک UI ، یک پایگاه داده و یک نحو انگلیسی انگار داشته باشید

    دوم ، cron بدون در نظر گرفتن اینکه فراخوان قبلی کار به اتمام رسیده باشد ، کار را در زمان مشخص اخراج خواهد کرد. بنابراین یک کار در هر دقیقه یک بار که 2 دقیقه طول بکشد به سرعت منجر به اجرای همان کار می شود.

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

    من به دو روش به این موارد پرداخته ام:
    - برنامه را از طریق cron look در یک پایگاه داده فعال کنید تا تعیین کند چه چیزی باید اجرا شود. بسته به خواسته های خود ، آن را هر دقیقه یا یک بار اجرا کنید
    - از هر اسکریپت بخواهید یک پرونده "قفل" در / tmp ایجاد کند و اگر وجود دارد ، دوباره شروع نکنید ، این از کارهای تکراری جلوگیری می کند اگر آنها را نمی خواهید
    - اگر اسکریپت پرونده قفل را بیش از 1 ساعت پیدا کند (یا هر چیزی که نشان می دهد شما فوت کرده اید) یک هشدار ایمیل ارسال کنید
    - از اسکریپت بخواهید در صورت عدم موفقیت در کار ایمیل ارسال کند تا بدانید مشکلی پیش آمده است
    - وقتی نیازهای شما از چند اسکریپت فراتر می رود ، به چارچوب هایی مانند Flux یا برنامه ریزهای تجاری نگاه کنید

    کریس

  3. 4

    همچنین اضافه می کنم که در اکثر سیستم های Linux / Unix ، "crontab -e" همان چیزی است که شما برای ویرایش crontab خود استفاده می کنید. به نظر من میزبان شما (Jumpline) به دلایل امنیتی از نسخه اصلاح شده استفاده می کند.

  4. 5

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

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

    با تمام جدیت ، احساس می کنم فقط با آنچه می توانم با cron jobs خودکار کنم سطح را خراشیده ام. آنها واقعاً بهترین دوست توسعه دهندگان هستند. اگر از شخصی مانند CPanel برای مدیریت سرور خود استفاده می کنید ، رابط کاربری بسیار دوستانه تری برای ایجاد کرون فراهم می کند. با منوهای کشویی برای دقیقه ، ساعت ، روز ، ماه و ... کامل شوید که خط cron را برای شما ایجاد می کند.

  5. 7

    من قطعاً می بینم این چیزی است که هر بازاریاب باید از آن استفاده کند ... آیا کسی وجود دارد که بتواند این سرویس را ارائه دهد زیرا کمی "فنی" به نظر می رسد؟

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

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