我们遇到了一个问题,即使用
call
中的 Kernel.php
方法来执行 Laravel 计划任务,在 Windows 上的开发模式下无法按预期执行。运行 php artisan schedule:work
时,即使添加了一个简单的任务,它也仅显示“没有计划的命令已准备好运行”。
这是我们在
Kernel.php
中使用的最小示例:
protected function schedule(Schedule $schedule) { $schedule->call(function () {Log::info("Hello world"); })->everyMinute(); }
我们期望看到“Hello world”出现在日志文件中 (
storage/logs/laravel.log
),但事实并非如此。
我们已经尝试过的步骤:
验证
Kernel.php
文件的语法。
运行适当的 Artisan 命令:
php artisan schedule:run
和 php artisan schedule:work
。
检查日志文件的权限。
尽管进行了这些尝试,计划任务仍无法正常工作。有人有解决这个问题的建议吗?
在 Laravel 11 中,您也可以使用
bootstrap/app.php
文件。使用 withSchedule
功能。以下是您可以修改此文件以包含计划任务的方法:
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
})
->withExceptions(function (Exceptions $exceptions) {
//
})
->withSchedule(function (Schedule $schedule) {
$schedule->call(function () {
info('Hello world!');
})->everyMinute();
})->create();
使用 Artisan 命令在本地测试调度程序:
php artisan schedule:work