服务器测评网
我们一直在努力
广告
广告
广告
广告
广告
广告
广告
广告
广告

laravel12如何使用定时任务调度,创建+执行

广告
广告

一、任务调度简介

在过去,您可能为服务器上需要调度的每个任务编写了 cron 配置项。然而,这很快就会变成痛苦,因为您的任务调度不再在源代码控制中,您必须 SSH 登录到您的服务器查看现有的 cron 项或添加额外的项。 Laravel 的命令调度器提供了一种全新的方法来管理服务器上的定时任务。调度器允许您在 Laravel 应用程序本身中流畅且有表达力地定义命令调度。使用调度器时,您的服务器上只需要一个单一的 cron 条目。您的任务调度通常在应用程序的 routes/console.php 文件中定义。

二、任务调度定义方法一

您可以在应用程序的 routes/console.php 文件中定义所有的调度任务。让我们从一个示例开始,我们将安排一个闭包在每天午夜被调用。在闭包中,我们将执行一个数据库查询来清空一个表:

<?php
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schedule;
Schedule::call(function () {
  DB::table('recent_users')->delete();
})->daily();

二、任务调度定义方法二

1、除了使用闭包调度,您还可以调度 可调用对象。可调用对象是包含 __invoke 方法的简单 PHP 类:

在项目下的app\Http\Schedule新建一个DeleteRecentUsers.php,编写如下代码

<?php
namespace App\Http\Schedule;
use Illuminate\Support\Facades\DB;
class DeleteRecentUsers
{
  public function __invoke()
  {
   DB::table('recent_users')->delete();
  }
}
?>

2、引入类文件:在项目根目录下的composer.json加入 “app/Http/Schedule”,代码

"autoload": {
    "classmap": [
      "app/Http/Schedule"
    ],
    "psr-4": {
      "App\\": "app/",
      "Database\\Factories\\": "database/factories/",
      "Database\\Seeders\\": "database/seeders/"
    }
  },

3、执行加载:执行composer dumpautoload 执行加载,使其生效

composer dumpautoload

4、调用:在routes/console.php调用

<?php
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Schedule;
Artisan::command('inspire', function () {
  $this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote')->hourly();
Schedule::call(new \App\Http\Schedule\DeleteRecentUsers)->everySecond();

5、执行任务调度

 php artisan schedule:run

67e5190617662

6、定时执行:服务器上设置定时执行,加入到crontab

crontab -e

添加如下执行每一分钟执行一次脚本

* * * * * cd /data/wwwroot/www.example.com && /usr/local/php8.2/bin/php artisan schedule:run >> /dev/null 2>&1 >> /home/wwwlogs/schedule.log
好主机测评广告位招租-300元/3月
赞(0) 打赏
未经允许不得转载:好主机测评网 » laravel12如何使用定时任务调度,创建+执行
好主机测评广告位招租-200元/3月
好主机测评广告位招租-100元/3月

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫