Laravel 定时任务以及 crontab 安装

安装 crontab#

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 定时任务#

执行命令

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
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。