Laravel 任务计划程序总是失败

当我添加 onFailure 回调时,具有 call 方法的任务计划程序总是失败


基本测试:


// Console\Kernel.php

$schedule->call(function () {

    var_dump('test');

})

->onFailure(function () {

    var_dump('failed');

})

->everyMinute();

https://img1.sycdn.imooc.com/652ba1e400016c7e03580057.jpg

我哪里错了或者遗漏了什么?

提前致谢


POPMUISE
浏览 87回答 0
0回答

翻过高山走不出你

更新:我提交了一个 PR 来在 Laravel 框架中修复这个问题,它刚刚被合并。看起来这将在 Laravel 8 中运行(我认为将于下周发布)。https://github.com/laravel/framework/pull/33914看来成功/失败挂钩不适用于闭包。从源代码来看,Laravel 似乎依赖退出代码来确定计划任务是否成功:https://github.com/laravel/framework/blob/7.x/src/Illuminate/Console/Scheduling/Event.php#L787您可以在此处看到它正在寻找 0 以外的退出代码。问题是,只有在通过外部进程调用预定命令时才会设置退出代码:https://github.com/laravel/framework/blob/7.x/src/Illuminate/Console/Scheduling/Event.php#L222对于关闭(回调)任务,不更新退出代码:https://github.com/laravel/framework/blob/7.x/src/Illuminate/Console/Scheduling/CallbackEvent.php#L75-L85这意味着,退出代码仍然为null,它不为 0,并且计算结果为失败。这可能是 Laravel 团队会考虑在未来版本中改进的内容。同时,如果您编写传统的artisan 命令并通过调度程序运行该命令,您应该会发现成功/失败挂钩按预期工作。
打开App,查看更多内容
随时随地看视频慕课网APP