قبل از شروع آموزش Cron Job در PHP نیاز است مفاهیمی را یاد بگیریم
کرون جاب یا Cron Jobs قابلیتی در سیستم های لینوکسی می باشد که وظیفه ی اجرای عملیاتی خاص در زمانبندی خاصی را به صورت کاملا اوتوماتیک بر عهده دارد. با استفاده از کرون جاب به صورت کلی می توانید کار های روتین و تکراری را به سادگی و بدون دخالت کاملا اوتوماتیک زمانبندی و اجرا نمایید .
این عملیات می تواند بعنوان مثال برای اجرای زمانبندی شده ی یک فایل PHP به منظور ارسال ایمیل به کاربران که به صورت اتوماتیک در زمان مشخص شده مثلا هر روز ساعت ۹ صبح باشد و یا گرفتن بکاپ از پایگاه داده, عملیات پاکسازی, تهیه گزارش آنالیز هفتگی, دریافت فید RSS و …
کارهایی که باید با زمانبندی انجام شوند در فایلی با نام CronTab ذخیره می شوند. CronTab یک فایل متنی است که در هر سطر آن یک دستور با فرمتی که برای Cron قابل فهم است قرار می گیرد. به هر کدام از دستورات این فایل اصطلاحا Cron Job گفته می شود.
یک کرون جاب همیشه شامل ۵ ستون است که هر کدام از آنها نشان دهنده زمان است که نهایتا به یک مسیر یا دستور برای اجرا ختم می شود.
هر کدام از ستون ها به ترتیب نشان دهنده :
- Minutes : دقیقه [۰-۵۹]
- Hours : ساعت [۰-۲۳]
- Days : روز [۱-۳۱]
- Months : ماه [۱-۱۲]
- Days of the Week : روزهای هفته [۰-۶]
1 2 3 4 5 6 7 |
Minutes [0-59] | Hours [0-23] | | Days [1-31] | | | Months [1-12] | | | | Days of the Week [Numeric, 0-6] | | | | | * * * * * home/path/to/command/the_command.sh |
برای مثال, اگر می خواهید زمان بندی را برای ۱۲قبل از ظهر اولین روز هر ماه قرار بدید, چیزی مثل دستور زیر را خواهید داشت:
1 |
0 0 1 * * home/path/to/command/the_command.sh |
اگر قصد دارید که زمان بندی را برای هر شنبه در ۸:۳۰ قرار بدید :
1 |
30 8 * * 6 home/path/to/command/the_command.sh |
همچنین اوپراتون های دیگه وجود دارد که میتونید در زمان بندی استفاده کنید
- کاما (,) برای ساخت لیستی از مقادیر از هر ستون کرون
- خط تیره (–) برای مشخص کردن محدوده مقادیر
- ستاره ها (*) برای مشخص کردن مقدار همه
cronTab به صورت پیش فرض یک ایمیل اطلاع رسانی را برای تسک اجرا شده ارسال می کند در بعضی شرایط به ارسال این ایمیل نیاز نداریم برای همین می توانیم خروجی را به دیوایس /dev/null
انتقال بدیم. این انتقال خروجی با اوپراتور >
انجام میشود .
1 |
30 8 * * 6 home/path/to/command/the_command.sh >/dev/null |
اگر قصد دارید که ارور ها رو هم به دیوایس نال انتقال بدید میتونید از این دستور نیز بهره ببرید.
1 |
30 8 * * 6 home/path/to/command/the_command.sh >/dev/null 2>&1 |
طرح کلی آموزش 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 بصورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php Class Ssh2_crontab_manager { private $connection; private $path; private $handle; private $cron_file; function __construct() {...} public function exec() {...} public function write_to_file() {...} public function remove_file() {...} public function append_cronjob() {...} public function remove_cronjob() {...} public function remove_crontab() {...} private function crontab_file_exists() {...} private function error_message() {...} } |
برای دانلود کامل این کلاس به همراه متدها به باکس دانلود زیر این پست مراجعه کنید
اجرای کلاس آموزش Cron Job در PHP
برای شروع در ابتدا, یک شی نمونه از کلاس خود را می سازیم. که نیاز است در ابتدا آدرس IP , پورت , نام کاربری و پسورد را به کلاس سازنده (constructor) پاس بدیم
1 |
$crontab = new Ssh2_crontab_manager('5.5.22.33', '22', 'my_username', 'my_password'); |
اضافه کردن یک cron job :
با داشتن کانکشن احراز هویت شده می توانیم یک کرون جاب جدید را بسازیم.
1 2 |
$crontab = new Ssh2_crontab_manager('5.5.22.33', '22', 'my_username', 'my_password'); $crontab->append_cronjob('30 8 * * 6 home/path/to/command/the_command.sh >/dev/null 2>&1'); |
اضافه کردن آرایه ای از cron job ها :
افزودن تعدادی از cron job ها به سادگی اضافه کردن یک cron job است. به راحتی آرایه از کرون جاب را به متد apeend_cronjob()
می دیم.
1 2 3 4 5 6 7 8 |
$crontab = new Ssh2_crontab_manager('5.5.22.33', '22', 'my_username', 'my_password'); $new_cronjobs = array( '0 0 1 * * home/path/to/command/the_command.sh', '30 8 * * 6 home/path/to/command/the_command.sh >/dev/null 2>&1' ); $crontab->append_cronjob($new_cronjobs); |
حذف یک cron job :
در اینجا از عبارت های با قاعده (Regular Expression) برای پیدا کردن یک کرون جاب یکتا و حذف آن استفاده می کنید . مطیمنا بسته به کرون جابی که می خواین مثلا بر اساس ماه پیدا و حذف کنید عبارت regex شما متفاوت خواهد بود.
1 2 3 4 5 |
$crontab = new Ssh2_crontab_manager('5.5.22.33', '22', 'my_username', 'my_password'); $cron_regex = '/home\/path\/to\/command\/the_command\.sh\/'; $crontab->remove_cronjob($cron_regex); |
حذف آرایه ای از cron job ها :
همانند حذف یک cron job اینجا هم از regex استفاده می کنیم که هر کدام از آن را در خانه ای از آرایه قرار میدیم و در نهایت متد remove_cronjob
را اجرا می کنیم.
1 2 3 4 5 6 7 8 |
$crontab = new Ssh2_crontab_manager('5.5.22.33', '22', 'my_username', 'my_password'); $cron_regex = array( '/0 0 1 \* \*/', '/home\/path\/to\/command\/the_command\.sh\/' ); $crontab->remove_cronjob($cron_regex); |
جمع بندی
همانطور که دیدید چقدر کار با Cron Job در PHP آسان و لذت بخش است . بخصوص که کلاس خودمان را نوشتیم و بدون استفاده از کلاس دیگه ای از متد های ساخته شده خودمان عملیات مختلف را کنترل کردیم .
مطمینا متوجه شدید که task scheduling چقدر میتونه در مدیریت اسکریپت ها در اپلیکیشن های تحت وب مفید و کارامد باشد و با استفاده از کرون جاب به صورت کلی می توانید کار های روتین و تکراری را به سادگی و بدون دخالت کاملا اوتوماتیک زمانبندی و اجرا نمایید .
امیدوارم از آموزش Cron Job در PHP نهایت استفاده را برده باشید .
برای دانلود سورس کد کامل کلاس و متدهای استفاده در این آموزش از باکس دانلود استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.
سلام و تشکر بابت سایت خوبتون
کتابخانه shh2 برای ویندوز متاسفانه دانلود نمیشه اگر فایلش رو داریم لطف کنید و به ایمیل من بفرستید با تشکر .
لینک دانلود که خراب هست : https://pecl.php.net/package/ssh2/1.4.1/windows
سلام. خوشحالیم که مفید واقع شده
طبق نسخه php خودتون در جدول دوم در این صفحه
https://pecl.php.net/package/ssh2/1.4.1/windows
میتونید دانلود کنید
سلام ممنون از توضیحات خوبتون
من کدهام رو با php نوشتم، حالا اگر کسی لینک این صفحه رو بدونه و بشینه تند تند رفرش بشه کارم رو خراب میکنه
چیکار کنم که فقط کران جاب بتونه این مورد رو اجرا کنه و اگر کسی لینک رو پیداش کرد نتونه خرابکاری کنه
کدی نوشتم که پیامک می فرسته و اگر لینک بیفته دست اهلش می دونید که چه بلایی سرمون میاره
سلام
این رو اول فایل php اضافه کنید
if( $_SERVER[‘REMOTE_ADDR’] != $_SERVER[‘SERVER_ADDR’] || $_SERVER[‘REMOTE_ADDR’] != “127.0.0.1” ){
die(‘Access denied!’);
}
یا .htaccess زیر رو در فولدری که فایل مورد نظر هست بزارید
Order Allow,Deny
Deny from all
سلام
خوب هستین
من طبق چیزایی که گفتین اول رو یه هاستی تست کردم و به یه اروری خوردم
PHP Fatal error: Uncaught Error: Call to undefined function ssh2_connect()
و چک کردم دیدم دسترسی SSH2 رو تو هاست ندارم
رو یه هاست دیگه تست کردم که این دسترسی بود و تیکه کد زیر رو نوشتم ( واسه ربات تلگرامی هستش)
if( $text == “تست” ){
SendMessage($fid,”قبل تیکه کد که ارسال میشه”);
$crontab = new Ssh2_crontab_manager(‘77.388.330.86’, ‘2083’, ‘amioei82’, ‘@kaks_iiw8sk’);
$crontab->append_cronjob(‘* * * * * home/amioei82/public_html/Bot/test.php >/dev/null 2>&1’);
SendMessage($fid,”بعد تیکه کد که ارسال نمیشه”);
exit;
}
همینطور که میبینی نوشتم تیکه کد قبل این درخواست ست کردن کرون اجرا میشه و پیام تو تل ارسال میشه، ولی تیکه کد بعد درخواست اجرا نمیشه
انگاری مثلا شرط بریک میشه اونجا
کرونی هم ست نمیشه
فایلی هم که آدرس دادم وجود داره و بدون باگ هستش
سلام. ممنون
از exit استفاده نکنید
سلام وقت بخیر
من یک سرور centOs دارم و داخلش یک پوشه دارم برای اجرای فایل های php ، قطعه کد php ای دارم که وظیفش ساخت فایل با پسوند txt هست که میخوام در روز و ساعت های مشخص تعداد مشخصی فایل txt برام بسازه. مثلا در تاریخ ۷ مهر ماه ساعت ۱۰ صبح ۳۰ تا فایل txt بسازه.
با توجه به سرور موجود چطور میتونم این کار و انجام بدم؟ آیا به پیش نیازی برای نصب احتیاج دارم؟
سلام.
هیچ چیزی غیر از همین دستورات کرون جاب نیاز نیست کافیه کدهای php ساخت فایل های txt رو بنویسید و داخل کد php اولش چک کنید که امروز همون تاریخ و ساعت باشه و بعد کرون جاب رو بزارید هر ساعت یکبار و تمام
سلام
در سرور من هیچ دستوری در cron tab ای اجرا نمیشه، حتی زمانی که با دستور crontab -e در خود ادیتور لینوکس مینویسم هم اجرا نمیشه. به نظرتون چرا این اتفاق میفته؟
سلام.
باید این موارد رو از مدیر سرور یا هاستینگ ببرسید تا بررسی و رفع کنند
سلام. من یه تکه کد php دارم که می خواهم “آخرین دوشنبه هر ماه” اجرا بشه.
سوال اولم این هستش که آیا می شود این رو کاملا به کرون جاب سپرد یا نه ؟ (یعنی چجوری میشه تعریف کرد که فقط آخرین دوشنبه ماه باشه …)
و سوال دومم که مهم تر هست، اینکه چجوری می شود در php بررسی کرد که امروز آخرین دوشنبه ماه است ؟
سلام.
برای این موارد باید از strtotime استفاده کنید:
strtotime(“last Monday of “.date(‘Y-m’));
این تابع مقدار timestamp آخرین دوشنبه ماه فعلی رو به شما میده
تو phpتون این تابع رو میزارید چک میکنید که اگه time() فعلی مساوی یا بزرگتر خروجی strtotime بود اون کاری که میخواید انجام بشه. فایل php رو هم مثلا میتونید به کرون جاب هر ۱۲ساعت یا ۲۴ساعت یکبار بزارید
من یه لینک دارم، نیاز دارم که هر دقیقه یکبار خودکار لود بشه. کرون جاب آماده با php برای اینکار هست؟
هاستم دستور wget اجرا نمیکنه
خود هاست کرون جاب داره
درود
وقت بخیر
داخل بعضی از سایت ها مخصوصا خارجی هابرای اجرای کرون جاب از بعضی از سوئیچ ها در مقابل php استفاده کردن، مثل php -q /path/script.php یا php -f /path/script.php ، مقدور هست راهنمایی بفرمایید که این سوئیچ های q و f چه تفسیری و عملکردی دارند؟
با سپاس
سلام ممنون این آموزش رو ببینید :
آموزش PHP CLI
با سلام عالی بود
من یه فانکشن در فایل فانکشن دارم مثلا
function test()
{
.
.
}
و می خوام در زمان مشخص از طریق جاب کرون اجرا بشه
چطور در جاب کرون فانکشن ;()test را صدا بزنم که اجرا بشه?
با سپاس…
سلام. اول این تابع رو داخل یک فایل php قرار میدید و بعد اون فایل رو برای کرون جاب ست می کنید
ممنون ولی می خوام کد php داخل کرون جاب اجرا بشه که نمیشه
اصلا یه طور دیگه ای توضیح میدم
چرا دستوراتی مثل دستور زیر در فایل کرون جاب اجرا نمی شود؟
wp_set_object_terms(396, 55, ‘product_tag’ , true);
یا
wp_set_object_terms(83, 100, ‘product_cat’ , true);
یا هر دستور php
می دونید این دستور ها اگر در فایل های قالب سایت مثلا در index.php یا single-product.php باشد اجرا می شود البته اگر صفحه اصلی سایت یا صفحه محصولی را در بروزر باز کنیم ولی همین کدها در فایل کرون جاب اجرا نمی شود. یه جوری انگار کدها را نمی فهمد
چه باید کرد؟
توابع مربوطه در فایل فراخوانی بشه وگرنه این کدها چون نیاز به فایل اصلی دارند اینجوری اجرا نمی شوند
برای ورردپرس کلی افزونه برای کرون جاب هست :
https://kinsta.com/knowledgebase/wordpress-cron-job/
سلام
آیا وبسرویسی هست که بشه با اون کرون جاب کرد؟(در سی پنل ذخیره نشده)
سلام. بله خیلی زیاد هستند گوگل سرچ کنید
مثلا https://cron-job.org/en
سلام
من میخواهم پست زمانبندی شده مثل وردپرس ایجاد کنم.
یعنی یک زمان و تاریخ رو بهش بدم و بعد بگم که زمانی که به این تاریخ و ساعت رسیدی خودت منتشر شو.
آیا این کار را با این آموزش می تونم انجام بدم؟
ممنون می شم راهنمایی کنید.
سلام. بله دقیقا با این آموزش میتونید این کار رو انجام بدید
حتی از خود cron job داخلی هاست هم میتونید بهره ببرید.
به این صورت که در جدول مقالات در دیتابیس شما یک سطر دیگه اضافه می کنید مثلا publish_at که اینجا timestamp آینده که میخواید منتشر بشه رو مشخص می کنید.
بعد یک فایل php ایجاد می کنید که داخل آن به دیتابیس کویری می زنید و در جدول مقالات یک where publish_at > NOWTIME که NOWTIME همان خروجی time() فعلی هست و اگر این کویری خروجی داشت شما مقدار published اون مقاله رو در دیتابیس مثلا ۱ می کنید و این مقاله در سایت نمایش داده میشود.
بعد این فایل php رو بصورت cron job هر ده دقیقه یکبار داخل هاست ست می کنید
سلام من یک سایت آزمون آنلاین دارم، میخوام در یک زمانی که از قبل تعیین شده آزمون فعال یا غیر فعال شود ؟؟!
کرون جاب این امکان را دارد ؟؟!
اگر دارد لطفا راهنمایی ام کنید !
سلام. بله کد خودتون رو در یک فایل php بنویسید و داخل دیتابیس سطر آزمون یک فیلد برای این مورد بزارید که مقدارش همان زمان غیرفعال شدنش به timestamp باشه بعد کرون جاب بزارید و مثلا هر یک دقیقه یکبار این فایل php اجرا بشه و داخل کدهای آن چک بشه که اگر زمان فعلی بزرگتر یا مساوی timestamp ذخیره شده بود سطر آزمون در دیتابیس مثلا status رو ۰ کنه.
موفق باشید.
سلام
من یک فایل php دارم که میخوام در هر روز یک ایمیل به کاربران ارسال بشه و با استفاده از Cron Jobs تنظیمات رو انجام دادم اما پس از اجرا Permission denied به ایمیلم ارسال میشه.
آیا در فایل php باید کامندهای لینوکس نوشته بشه ؟
آیا فایلی که تنها کدهای php نوشته شده قابل استفاده نیست؟
ممنونم از راهنماییتون
سلام.
بعد اینکه فایل php شامل کدهای ارسال ایمیل هست را نوشتید کافیه که اون رو داخل کرون جاب هاست تنظیم کنید و نیاز نیست برای کرون جاب کدجداگانه ای بنویسید.
آموزش ایجاد کرون جاب در کنترل پنل Cpanel
https://my.mihanwebhost.com/knowledgebase.php?action=displayarticle&id=210
آموزش کرون جاب (Cron Jobs) در دایرکت ادمین
https://my.mihanwebhost.com/knowledgebase.php?action=displayarticle&id=161
سپاس
دلیل Permission denied بودن رو میشه لطفا بفرمائید؟
و چطور میشه پرمیشن فایل را روی ۷۵۵ قرار بدم؟
ممنون از راهنماییتون
از چه دستوری استفاده می کنید ؟
دستور شما باید بصورت زیر باشه :
php /home/USER/public_html/run.php
اگر بازم این خطا را دارید حتما به هاستینگ تیکت بزنید راهنمایی می کنند.
سلام مجدد و تشکر
مورد Permission رفع شد اما این خطا را دریافت میکنم:
line 1: syntax error near unexpected token `(‘
فایل یکبار به صورت تست run شده و بدون خطا اجرا شده اما هنگام اجرا توسط cron jobs این خطا گرفته میشه
ممنون میشیم راهنمایی بفرمائید.
سلام. در بعضی هاستینگ ها دستور اجرای کرون جاب ممکن هست فرق داشته باشه که به هاستینگ تیکت بزنید و بپرسید
باز کردن دسترسی به شل (اینکه بشه دستورات شل اجرا کرد) مشکل امنیتی ایجاد نمیکنه؟ این مشکل رو چجوری برطرف میکنید؟
سلام. روی سرورهای مجازی مشکلی از این نظر پیش نمیاد.
با عرض سلام ببخشید یک لینک دانلود دارم میخوام وقتی پرداخت انجام شد این لینک فعال شود چطوری داخل دیتابس باید شرط بزارم . و چطوری میتونم واسه لینکم زمانبندی بزارم ؟
سلام. این آموزش رو دنبال کنید :
https://netparadis.com/generate-onetime-download-link-php
سلام وقتتون بخیر
من تو ربات تلگرام یه حلقه while دارم که پیام میفرستم باهاش به مخاطبام.الانکه مخاطبا زیاد شدن این حلقه میره رو تکرار یه جورایی بیرون نمیاد ازش .چجوری میتونم کرون جاب ست کنم که مثلا ۱۰۰ تا ۱۰۰ تا پیام بفرسته یا با فاصله ی زمانی مشخص بفرسته فشار رو هاست نیاد و قاطی نکنه
سلام. ممنون. یکه کانتر بزارید مثلا $count = 0 و داخل حلقه چک کنید به عدد موردنظر مثلا ۱۰۰ رسید از حلقه بیرون بشه.
موفق باشید.
سلام و خسته نباشید. من ربات تلگرام مینویسم. میخوام یک فایل installer بسازم که دیگه نیازی نباشه که عملیات نصب سورس به صورت دستی انجام بشه. فایل installer من باید به دیتابیس وصل بشه و یکسری جداولی رو ایجاد کنه. بعد یک کرون جاب ست کنه و در آخر هم ست وب هوک کنه. شما که cron tab گفتین من یکم قاطی کردم. و همچنین اون کانکشن و اینا رو هم که گفتین بیشتر قاطی کردم. خب کانکشن برای چی لازمه؟ راه بهتری برای من نیست؟
سلام. ممنون.
کانکشن برای اتصال به دیتابیس است. شما دفیقا همین موردی که گفتید را به راحتی میتونید در installer خودتون بنویسید و کاملا هم کار خواهد کرد.
سلام جناب شفیعی
من با php کار میکنم. میخوام یکسری مطالب از پایگاه داده به کانال تلگرام ارسال کنم که هر مطلب در زمان به خصوصی هست اما این اموزش یکم منو گیج کرده
میشه یکم واضح تر راهنماییم کنین
سلام. باید با بات نویسی آشنا باشید تا بتونید اینکار رو انجام بدید.
کافیه فایل php مورد نظر رو تهیه کنید بعد با قابلیت کرون جاب خود پنل هاست بدون کدنویسی خاصی, عملیات دلخواهتون رو انجام بدید.
موفق باشید.
با سلام و خسته نباشید من هاست ویندوزی دارم و میخوام هر روز صبح از دیتابیس چک کنه و به کسایی که تولدشون هست sms تبریک بده ولی الان مشکلم اجرای خودکار برنامه هست، سؤال داشتم یکی اینکه کرون جاب روی هاست ویندوز کار می کنه یا نه و اینکه اگر نه برنامه جایگزین چه هست
سپاسگزارم
سلام. ممنون.
خب شما کل این عملیات رو که میخواید باید داخل یک فایل php کد بزنید که متصل به دیتابیس بشه و sms ارسال کنه و بعد آدرس این فایل رو داخل کرون جاب ب بازه زمانی دلخواه تعریف کنید تا در ساعات مشخص این فایل اجرا شود.
در سرور ویندوزی هم باید همچنین دستوری روی
C:\path\to\php\php.exe C:\path\to\cron.php
را داخل برنامه schedule task ویندوز تعریف کنید تا با cmd اجرا شود.
موفق باشید.
ضمن تشکر از آقای شفیعی عزیز…
من هم دقیقا مشکل آقای حامد رو دارم که در صفحه مربوط به Post – Get آقای شفیعی فرمودن که با استفاده از cronjob نمیشه متد های http رو استفاده کرد.
مشکل اساسی اینه که وبسرویس پیامک ارائه شده توسط شرکت ها بیشتر متد های get , post رو قبول میکنن.
میشه راهنمایی بفرمایید که شرکت ها برای ارسال پیامک برای مناسب های خاص بصورت اتوماتیک از چه روشی استفاده میکنن ؟؟
سلام. در این صورت باید یک سرور مجازی با دسترسی به شل داشته باشید تا بتونید مستقیما دستورات ترمینال یا همان بش را از طریق اسکریپت php اجرا کنید.
موفق باشید.
سلام . خسته نباشید . من با لاراول کار میکنم و دسترسی به سرور را هم در محیط سی پنل دارم . در لاراول دو تا فایل هست که به کران جاب مربوط میشه یکی فایل kernel.php ودیگری فایلی به اسم دلخواه مثلا cron.php که حاوی کاری است که میخواهیم بطور متناوب اجرا شود . در محیط سی پنل یک آیتمی داره به اسم cronJob که در ان میتوانیم دوره تناوب اجرای دستور و محل فایل cron.php را مشخص کنیم . آخرش کاری که توانستم بکنم این بود که کران جاب رو فعال کنم ولی نمیتونه فایل cron.php را درست اجرا کنه و میگه Class ‘Illuminate\Console\Command’ not found . این پیام در ایمیلی که بهم میده هستش . چند تا سوال برام پیش اومد اول اینکه چه نیازی به این فایل kernel.php هست ؟ ما در خط command اسمی از آن نمیبریم . دوم اینکه اگر اصلا میشه دستورات آرتیسان را در خود cpanel که رابط من با سرور هست اجرا کنم ؟ در اینصورت چه دستوری باید بدم که پیام خطای بالا را نده ؟ سوم اینکه در خط کامند اصولا دو مدل میشه نوشت یکی آدرس فایل cron.php را داد و دیگری دستور آرتیسان artisan schedule:run را داد . چه فرقی دارن اینا با هم .
خیلی متشکر از لطفی که در پاسخ بدادن سوالات میکنید.
سلام. ممنون. متاسفانه با لاراول کار نکردم و از نحوه پیاده سازی این مورد در لاراول اطلاعی نداریم. میتونید با جستجوی خطاها در گوگل جواب سوال خود را پیدا کنید.
موفق باشید.