万维当云伯乐 CDN华纳云
Laravel2025-05-18702 阅读

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

本文摘要一、任务调度简介 在过去,您可能为服务器上需要调度的每个任务编写了 cron 配置项。然而,这很快就会变成痛苦,因为您的任务调度不再在源代码控制中,您必须 SSH 登录到您的服务器查看现有的 cron 项或添加额外的项。 Laravel 的命令调度器提供了一种全新的方法来管理服务器上的定时任务。调度器允许您在 Lara
丽萨主机
AD:
【广告招商】文章正文文字广告位开放合作
一、任务调度简介 在过去,您可能为服务器上需要调度的每个任务编写了 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
广告招商文章内容详情页下 · 优质席位开放中合作咨询