Laravel 11 中的时间表

问题描述 投票:0回答:1

我们遇到了一个问题,即使用

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 laravel-5 laravel-4 laravel-8 scheduled-tasks
1个回答
0
投票

在 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
© www.soinside.com 2019 - 2024. All rights reserved.