yum install vixie-cron
yum install crontabs
vixie-cron軟體包是cron的主程式.
crontabs軟體包是用來安裝、卸裝、或列舉用來驅動 cron 守護程式的表格的程式.
檢視crontab服務狀態,如圖則安裝成功
service crond status
檢視crontab是否設定為契機啟動,執行命令:ntsysv
- 上下鍵:可以在中間的方框當中,在各個服務之間移動;
- 空格鍵:可以用來選擇你所需要的服務,[*]表示開起啟動;
- tab鍵:可以在方框、OK、Cancel之間移動;
- [F1]鍵:可以顯示該服務的說明。
設定開機自啟動,如已設定請忽略
systemctl enable crond.service
執行命令
crontab -u www -e
注意:預設情況下,crontab是建立root使用者.更多時候php-fpm的使用者都是www許可權.
如果你在執行定時job時候有日誌生成操作,這時 root 許可權的日誌檔案,www 賬號無法寫入。(這是我第一次用crontab犯了一個錯.造成使用者代金券傳送失敗.吃一塹長一智,任何地方都要特別謹慎,PHP程式設計師不僅要寫程式碼,基本運維知識也要多掌握點.特別是在面對正式環境)
命令執行完畢會自動跳進編輯頁面,新增如下程式碼
* * * * * php /home/wwwroot/blog_vue/artisan schedule:run
- home/wwwroot/blog_vue這是我的檔案路徑,你可以替換自己的
- 預設生成的定時檔案目錄在:/var/spool/cron
- 上面的命令就是執行所有的schedule任務,你也可以新增指定的任務
* * * * *
預設是零點,你也可以設定其他時間段
執行命令
php artisan make:command SendPrize
在app/Console/Commons生成檔案SendPrize.php
namespace App\Console\Commands;
use App\Models\H5\Dafuweng\DafuwengStep;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
class SendTimes extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'send:prize';
/**
* The console command description.
*
* @var string
*/
protected $description = '描述';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//寫你的業務
}
}
在app/Console/Kernel.php加入執行shedule
protected $commands = [
SendPrize::class
];
protected function schedule(Schedule $schedule)
{
$schedule->command('send:prize');
}
定時任務在正式專案用的很多,例如活動每天為使用者贈送禮品,資料更新與備份等等.根據自己任務制定合適的定時任務會有助你程式碼更加簡潔高效.
如果想深入瞭解定時任務的魅力可以參照這篇文章:https://www.cnblogs.com/nb-blog/p/5865392....