Laravel定时任务

1、创建job

php artisan make:job job名称        //比如:ProcessDatabaseTable

2、在app/jobs创建ProcessDatabaseTable.php文件。定义逻辑如:

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use DB;

class ProcessDatabaseTable implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function handle()
    {
        // 你的数据处理逻辑,比如读取并编辑表中的数据
        $data = DB::table('your_table_name')->get();
        
        foreach ($data as $row) {
            // 这里添加你的编辑逻辑
            // 例如: $row->update(['column_name' => 'new_value']);
        }
    }
}

3、设置任务调度

在App\Console\Kernel.php 文件的 schedule 方法中设置定时任务

protected function schedule(Schedule $schedule)
{
    $schedule->job(new ProcessDatabaseTable())
             ->dailyAt('01:00');//每天凌晨1点执行
}

4、配置队列

在根目录.env文件配置队列驱动:

QUEUE_CONNECTION=redis

5、启动任务调度器

php artisan schedule:run --verbose --no-interaction

或持续执行

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

注意:

  1. * * * * *: 这是Cron作业的时间表,表示“每分钟”。你可以根据需要调整这些星号来改变执行频率(比如,0 3 * * * 会在每天凌晨3点执行)。

  2. cd /path-to-your-project: 这个命令改变当前工作目录到你的Laravel项目的根目录。/path-to-your-project 需要替换成你的实际项目路径。

  3. &&: 这是一个逻辑运算符,用于连接两个命令。只有当左边的命令成功执行(退出状态码为0)时,才会执行右边的命令。

  4. php artisan schedule:run: 这是Laravel框架中的命令,用于运行任务调度器。Laravel的任务调度器允许你定义计划任务,如定期清理缓存、发送邮件、数据库备份等。当这个命令被执行时,Laravel会检查app/Console/Kernel.php文件中的schedule方法,并执行所有计划的任务。

  5. >> /dev/null 2>&1: 这部分是关于命令输出的重定向。

    • >> /dev/null 表示标准输出(stdout,正常的信息输出)会被丢弃,不会显示在任何地方。/dev/null 是一个特殊的文件,任何写入它的内容都会被丢弃。
    • 2>&1 表示标准错误输出(stderr,错误信息输出)被重定向到标准输出的位置。在这里,因为标准输出已经被重定向到了/dev/null,所以标准错误也会被丢弃。这一操作使得整个命令执行过程静默无痕,除非出现严重错误,否则不会在终端或日志中产生任何输出。
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值