طراحی سایت, ساخت ربات تلگرام, آموزش php , سورس کد php ,سورس ربات تلگرام , سورس فروشگاه اینترنتی , آموزش طراحی وب

آموزش Cron Job در PHP


آموزش Cron Job در PHP

قبل از شروع آموزش Cron Job در PHP نیاز است مفاهیمی را یاد بگیریم

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

این عملیات می تواند بعنوان مثال برای اجرای زمانبندی شده ی یک فایل PHP به منظور ارسال ایمیل به کاربران که به صورت اتوماتیک در زمان مشخص شده مثلا هر روز ساعت ۹ صبح باشد و یا گرفتن بکاپ از پایگاه داده, عملیات پاکسازی, تهیه گزارش آنالیز هفتگی, دریافت فید RSS و …

کارهایی که باید با زمانبندی انجام شوند در فایلی با نام CronTab ذخیره می شوند. CronTab یک فایل متنی است که در هر سطر آن یک دستور با فرمتی که برای Cron قابل فهم است قرار می گیرد. به هر کدام از دستورات این فایل اصطلاحا Cron Job گفته می شود.

یک کرون جاب همیشه شامل ۵ ستون است که هر کدام از آنها نشان دهنده زمان است که نهایتا به یک مسیر یا دستور برای اجرا ختم می شود.

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

  • Minutes : دقیقه [۰-۵۹]
  • Hours : ساعت [۰-۲۳]
  • Days : روز [۱-۳۱]
  • Months : ماه [۱-۱۲]
  • Days of the Week : روزهای هفته [۰-۶]

برای مثال, اگر می خواهید زمان بندی را برای ۱۲قبل از ظهر اولین روز هر ماه قرار بدید, چیزی مثل دستور زیر را خواهید داشت:

اگر قصد دارید که زمان بندی را برای هر شنبه در ۸:۳۰ قرار بدید :

همچنین اوپراتون های دیگه وجود دارد که میتونید در زمان بندی استفاده کنید

  • کاما (,) برای ساخت لیستی از مقادیر از هر ستون کرون
  • خط تیره () برای مشخص کردن محدوده مقادیر
  • ستاره ها (*) برای مشخص کردن مقدار همه

cronTab به صورت پیش فرض یک ایمیل اطلاع رسانی را برای تسک اجرا شده ارسال می کند در بعضی شرایط به ارسال این ایمیل نیاز نداریم برای همین می توانیم خروجی را به دیوایس /dev/null انتقال بدیم. این انتقال خروجی با اوپراتور > انجام میشود .

اگر قصد دارید که ارور ها رو هم به دیوایس نال انتقال بدید میتونید از این دستور نیز بهره ببرید.

 

حتما بخوانید  متغیرهای محیطی در PHP

طرح کلی آموزش Cron Job در PHP

برای مدیریت cronTab در PHP , نیاز است که قابلیت اجرای دستور شل را روی سرور به منظور ویرایش فایل cronTab را داشته باشیم. در تعداد کمی از سرور های اشتراکی معمولا این قابلیت در دسترس است و در سرورهای مجازی و اختصاصی می توانید از این قابلیت به سادگی بهره ببرید.

در PHP برای اتصال به SSH2 میتوانیم از کتابخانه SSH2 استفاده کنیم. برای نصب کتابخانه ssh2 می توانید از این لینک استفاده کنید

برای شروع کار یک کلاس برای آموزش Cron Job در PHP نوشتیم که در زیر به تشریح ساختار آن می پردازیم.

در ابندا چهار property زیر را تعریف کردیم

  • $connection : کانکشن دیتابیس ما / ریسورس خروجی اتصال
  • $path : مسیر فایل
  • $handle : نام فایل کرون موقت ما
  • $cron_file : مسیر کامل فایل و نام فایل کرون

کلاس ما باید قابلیت اتصال و احراز هویت به منظور اجرای دستورات و داشتن دسترسی به cronTab کاربر را داشته باشد. بنابراین ما یک کانکشن SSH2 را داخل constructor برقرار و احراز هویت می کنیم.

برای اجرای دستورات نیاز است که از متد exec() استفاده کنیم.

سپس, نیاز به این خواهیم داشت که بتوانیم در فایل cronTab رایت کنیم. همچنین به راهی نیاز داریم که بتوانیم بعد از اتمام کار این فایل را حذف کنیم. برای اینکار متد write_to_file() و remove_file() را تعریف می کنیم.

البته, به راهی نیاز داریم که بتوانیم cron job ها را بسازیم و پاک کنیم. برای همین به ترتیب متدهای append_cronjob() و remove_cornjob() را ایجاد می کنیم.

برای اینکه بتوانیم کل cronTab ها را حذف کنیم نیاز است از متد remove_crontab() برای مدیریت این عملیات بهره ببریم.

در آخر, نیاز به دو متد کمکی (helper method) داریم. اولین متد, که مقدار بولین (boolean) را برگشت می دهد, بطور ساده وجود فایل موقت cron را بررسی می کند, متد بعدی, برای نمایش ارور های پیش امده استفاده می شود. نام متدهای به ترتیب crontab_file_exists() و error_message() خواهد بود.

 

کلاس کلی برای کار ما در ادامه آموزش Cron Job در PHP بصورت زیر است:

برای دانلود کامل این کلاس به همراه متدها به باکس دانلود زیر این پست مراجعه کنید

اجرای کلاس آموزش Cron Job در PHP

برای شروع در ابتدا, یک شی نمونه از کلاس خود را می سازیم. که نیاز است در ابتدا آدرس IP , پورت , نام کاربری و پسورد را به کلاس سازنده (constructor) پاس بدیم

حتما بخوانید  آموزش ساخت Queue در PHP – قسمت چهارم

اضافه کردن یک cron job :

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

اضافه کردن آرایه ای از cron job ها :

افزودن تعدادی از cron job ها به سادگی اضافه کردن یک cron job است. به راحتی آرایه از کرون جاب را به متد apeend_cronjob() می دیم.

حذف یک cron job :

در اینجا از عبارت های با قاعده (Regular Expression) برای پیدا کردن یک کرون جاب یکتا و حذف آن استفاده می کنید . مطیمنا بسته به کرون جابی که می خواین مثلا بر اساس ماه پیدا و حذف کنید عبارت regex شما متفاوت خواهد بود.

حذف آرایه ای از cron job ها :

همانند حذف یک cron job اینجا هم از regex استفاده می کنیم که هر کدام از آن را در خانه ای از آرایه قرار میدیم و در نهایت متد remove_cronjob را اجرا می کنیم.

 

جمع بندی

همانطور که دیدید چقدر کار با Cron Job در PHP آسان و لذت بخش است . بخصوص که کلاس خودمان را نوشتیم و بدون استفاده از کلاس دیگه ای از متد های ساخته شده خودمان عملیات مختلف را کنترل کردیم .

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

 

امیدوارم از آموزش Cron Job در PHP نهایت استفاده را برده باشید .

برای دانلود سورس کد کامل کلاس و متدهای استفاده در این آموزش از باکس دانلود استفاده کنید.

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

موفق و پیروز باشید.

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

دیدگاه کاربران

avatar
1 دیدگاه ها
1 پاسخ ها
0 دنبال کننده ها
 
دیدگاه با بیشترین پاسخ
پرطرفدارترین دیدگاه ها
2 تعداد نویسندگان دیدگاه
حسن شفیعیسامان نویسنده های اخیر دیدگاه
سامان
سامان

سلام . خسته نباشید . من با لاراول کار میکنم و دسترسی به سرور را هم در محیط سی پنل دارم . در لاراول دو تا فایل هست که به کران جاب مربوط میشه یکی فایل kernel.php ودیگری فایلی به اسم دلخواه مثلا cron.php که حاوی کاری است که میخواهیم بطور متناوب اجرا شود . در محیط سی پنل یک آیتمی داره به اسم cronJob که در ان میتوانیم دوره تناوب اجرای دستور و محل فایل cron.php را مشخص کنیم . آخرش کاری که توانستم بکنم این بود که کران جاب رو فعال کنم ولی نمیتونه فایل cron.php را درست… نمایش بیشتر

دانلود رایگان (هدیه ویژه)

کتاب آموزش زبان برنامه نویسی PHP را دانلود و همین امروز یادگیری را شروع کن و به جمع برنامه نویسان ملحق شو ;)

دانلود رایگان کتاب

سورس فروشگاهی دیجی کالا

بخش کاربران

هنوز عضو نیستید ؟ کلیک کنید

مجوزهای ما

logo-samandehi

دانلود کتاب

عضویت رایگان خبرنامه