Laravel进阶系列笔记--(十一)Laravel Linux中实现定时任务

作者: 温新

分类: 【Laravel】

阅读: 1997

时间: 2021-08-23 13:30:41

作者:温新

时间:2021-07-10

hi,我是温新,一名PHPer。

本篇文章基于CentOS7.7搭建的PHP环境进行演示。

Laravel实现定时任务真的是太简单了,而windows确实繁琐了很多。现在就来体验一下Linux中的定时任务吧。

Linux中基于Command的定时任务

第一步:创建command任务

php artisan make:command TestCommand

该命令会在app/Console/Commands目录下生成对应的文件。Commands目录默认不存在,执行命令时会自动创建。生成的文件内容如下:

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;

class TestCommand extends Command
{
	// 命令名称
    protected $signature = 'command:name';
	// 命令描述
    protected $description = 'Command description';

    public function __construct()
    {
        parent::__construct();
    }
    // 定时任务处理逻辑
    public function handle()
    {
        return 0;
    }
}

第二步:修改生成的文件

文件:app/Console/Commands/TestCommand.php

use Illuminate\Support\Facades\Log;

protected $signature = 'sche:test';
public function handle()
{
    // 需要处理的任务
    Log::info('command命执行的定时任务');
}

第三步:crotab添加定时任务

每分钟执行一次任务

* * * * * php /www/laravelStudy/schela8/artisan msg:hi >> /dev/null 2>&1

这样定时任务就解决啦。

错误解决:/bin/sh: php: command not found

定时任务已经设置好,时间到了,却没有执行,现在一步一步来解决。

第一步:查看PHP的环境变量

echo $PATH;
/usr/local/sbin:/usr/local/bin:/usr/sbin:
/usr/bin:/usr/local/mysql8/bin:/usr/local/php7.4.16/bin:/root/bin

假如,已经设置了PHP环境变量,但仍旧没有生效,则继续拍错。我遇到的情况就属于这样的情况。

第二步:设置软连接

ln -s /usr/local/php7.4.16/bin/php /usr/bin/php 

这样就解决咯

我是温新

每天进步一点点,就一点点

请登录后再评论