laravel----任务调度----及上线Linux修改创建文件权限

利用linux定时任务,只需要一个 Cron 条目,即可开启你的项目中所有定时任务

一、crontab 了解

分、时、日、月、周
注:简单的记成:分、时、日、月、周,通配符*配合位置表示任意值(如每分钟、每小时等)

1. cron相关命令

# 显示一个cron列表,其内容是由当前用户启动的任务
crontab -l

# 编辑自己的cron列表
crontab -e

2. 简单的栗子

* * * * * /path/php artisan myCommand             # 每分钟执行
*/1 * * * * /path/php artisan myCommand           # 每分钟执行,同上
*/5 * * * * /path/php artisan myCommand           # 每5分钟执行
10,20 * * * * /path/php artisan myCommand         # 每小时10分、20分时执行
1-31,35 * * * * /path/php artisan myCommand       # 每小时1至31分、35分执行

有时候我们觉得每分钟执行一次间距太大了,我想改成每20秒中执行

# 请参考这个栗子
* * * * * /path/php artisan myCommand    
* * * * * sleep 20 ; /path/php artisan myCommand
* * * * * sleep 40 ; /path/php artisan myCommand
#看到这里你应该秒懂了,其实就是延时20秒启动一次即可

二、Laravel 控制台

1、通过laravel提供的基础命令来生成一个Command,如:

php artisan make:command MyCommand

2、命令执行成功后会生成 app\Console\Commands\MyCommand.php

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class MyCommand extends Command
{
    // 控制台命令的名称和签名。
    protected $signature = 'command:MyCommand';

    //控制台命令描述。
    protected $description = 'Tell me,im great!';

    //
    public function __construct()
    {
        parent::__construct();
    }

    //执行控制台命令。
    public function handle()
    {
        // 入口方法
        Log::info('----定时任务----');
    }
}

3、打开 app\Console\Kernel.php

// ...
    protected $commands = [
        // 加入可用命令列表
        \App\Console\Commands\MyCommand::class,
    ];
// ...
    protected function schedule(Schedule $schedule)
    {
        // 批量执行时需要在这里定义,这里假设为每分钟执行
        $schedule->command('command:MyCommand')->everyMinute();
    }
// ...

4、测试

# 查看是否添加了命令
> php artisan list
# ...
 command
  command:MyCommand             Tell me,im great!t! # 这里出现了即代表可用
# ...

# 单命令执行
php artisan command:MyCommand  #去看记录的日志就可以了

测试适合开发环境
生产环境添加crontab即可

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

扩展

Linux下定时任务生成的日志是root用户,导致其他日志无法写入
解决办法:
修改
\laravel\vendor\laravel\framework\src\Illuminate\Log\Writer.php
在这里插入图片描述
这边我只修改了对Daily的记录形式的权限

END

发布了38 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42260789/article/details/89373386