在 Laravel 中可以使用任务调度器来实现定时执行的功能。
首先需要创建一个新的命令类,该类将包含我们想要定期运行的逻辑。可以通过 Artisan 命令 make:command 生成这样的类文件。比如,我们创建了一个名为 MyCommand 的命令类。
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class MyCommand extends Command
{
protected $signature = 'my-command'; // 自定义命令名称
public function handle()
{
// 在此处编写定时执行的逻辑
echo "Hello, I am running every minute!";
}
}
接下来,我们需要注册这个命令到应用程序的服务提供者(Service Provider)中。打开 app/Providers/AppServiceProvider.php 文件并添加以下内容:
public function boot()
{
if ($this->app->runningInConsole()) {
$this->commands([
\App\Console\Commands\MyCommand::class,
]);
}
}
然后,我们还需要配置计划任务。在项目根目录下的 app/Console/Kernel.php 文件中,找到 schedule 方法,并添加以下代码:
protected function schedule(Schedule $schedule)
{
$schedule->command('my-command')->everyMinute();
}
最后,我们只需要运行以下命令就可以启动定时任务:
php artisan schedule:run
每分钟都会执行一次 handle() 方法里面的逻辑,输出结果为 "Hello, I am running every minute!"。