Laravel 无法修改排队的作业代码

Laravel unable to modify queued job code

当我发送的作业由于 'ErrorException' with message 'Undefined variable: sender' 等异常而失败,并且我修复了代码并重新触发事件时,之前的代码再次运行,我得到了同样的错误。

我不知道为什么 Laravel 一遍又一遍地重新运行我的旧代码。显然,我希望能够修复破坏我工作执行的错误。

composer dump-autoloadphp artisan queue:flush 我都试过了,但都没有效果。有帮助吗?

您需要运行php artisan clear-compiled清除编译后的文件。

如果您查看 config/compile.php,您会看到一些额外的提供程序(或其他 类)默认由 Laravel 缓存。

如果您在 EventServiceProvider 中进行了任何更改并且它较早被缓存,Laravel 将不会看到这些更改,以防 php artisan optimize 命令较早启动(并查看https://github.com/laravel/laravel/blob/master/composer.json 你会看到它是在 运行ning composer installcomposer update) 之后启动的。

此功能与 Composer 本身没有任何共同之处,但与 Laravel 这就是为什么 运行ning composer dump-autoload 无济于事的原因。

我的 Laravel 5.1 config/compile.php 文件是空的,但这对我有帮助:

sudo 服务 beanstalkd 重启

php artisan queue:restart

Laravel 通常缺乏良好和准确的文档。

就我而言,主管是问题所在。

这是唯一对我来说一直有效的过程:

  1. 运行 'service supervisor stop'
  2. 运行 'service supervisor start'
  3. 退出浏览器,重新启动,清除缓存并重试

注意:运行宁'service supervisor restart'没有效果。

我将 Lumen 和 运行 用于同一问题。我试过 php artisan queue:restart,但什么也没做。然后我找到了这个线程并尝试 php artisan clear-compiled,根据获胜的答案,但得到了错误:

未定义命令 "clear-compiled"。

然后我看到 Artisan 有选项 php artisan cache:clear,这就成功了!当我在 php artisan queue:work 后触发该命令时,将使用我的新工作代码。