Laravel 定時任務以及 crontab 安裝

程式碼的壞味道發表於2019-07-08
yum install vixie-cron
yum install crontabs

vixie-cron軟體包是cron的主程式.
crontabs軟體包是用來安裝、卸裝、或列舉用來驅動 cron 守護程式的表格的程式.

檢視crontab服務狀態,如圖則安裝成功

service crond status

laravel定時任務以及cronrab安裝
檢視crontab是否設定為開機啟動,執行命令:ntsysv
laravel定時任務以及cronrab安裝

  • 上下鍵:可以在中間的方框當中,在各個服務之間移動;
  • 空格鍵:可以用來選擇你所需要的服務,[*]表示開起啟動;
  • 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....

本作品採用《CC 協議》,轉載必須註明作者和本文連結
cfun

相關文章