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
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!