Laravel框架在ubuntu下的定時任務【過期訂單自動關閉】
阿新 • • 發佈:2019-01-29
轉載了原作者的文章並結合自己的理解有所修改。
Ubuntu 下,命令列輸入
crontab -e
打開了一個檔案 然後在最後加入 這技術定時器,
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
然後我們重啟了服務
service cron restart
下面是在laravel檔案下的編寫
app/Console/Kernel.php【上面的定時好了之後我們就測試了一下定時向日志中新增語句,並且是每分鐘執行一次】
protected function schedule(Schedule $schedule) { $schedule->call(function () { Log::info('ccc'); })->everyMinute(); }
示例,自動處理過期訂單
Order.php
public static function handle_expired_order() { $orders = self::where('status', self::STATUS_NEW) ->whereRaw("created_at < NOW() - INTERVAL 1 DAY") ->get(); foreach ($orders as $order) { $order->status = self::STATUS_EXPIRED; $order->save(); } }
app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
Order::handle_expired_order();
})->hourly();
}
每小時執行
->hourly();
本地除錯的時候,最好改成
->everyMinute();
方便檢視效果。
當存在兩個定時任務時需要 分開寫
protected function schedule(Schedule $schedule){ 第一個定時任務
$schedule->call(function () {
Log::info('ccc');
})
第二個定時任務
$schedule->call(function () {
Log::info('哎哎哎');
})
})->everyMinute();}
方便檢視效果。