Php laravel 5.1在没有VM重启的情况下看不到对作业文件的更改
我已经在laravel 5.1应用程序中创建了一个新作业,运行在Homestead VM中。我已将其设置为排队,并在handle方法中包含代码 handle()方法以前期望传递一个参数,但现在不再需要,我已经从handle方法中删除了该参数 但是,当队列运行作业时,我会收到一个错误消息:Php laravel 5.1在没有VM重启的情况下看不到对作业文件的更改,php,laravel,laravel-5,homestead,Php,Laravel,Laravel 5,Homestead,我已经在laravel 5.1应用程序中创建了一个新作业,运行在Homestead VM中。我已将其设置为排队,并在handle方法中包含代码 handle()方法以前期望传递一个参数,但现在不再需要,我已经从handle方法中删除了该参数 但是,当队列运行作业时,我会收到一个错误消息: [2015-06-17 14:08:46] local.ERROR: exception 'ErrorException' with message 'Missing argument 1 for Simile
[2015-06-17 14:08:46] local.ERROR: exception 'ErrorException' with message 'Missing argument 1 for Simile\Jobs\SpecialJob::handle()' in /home/vagrant/Code/BitBucket/simile-app/app/Jobs/SpecialJob.php:31
该文件的第31行是:
public function handle()
它不再需要任何参数,除非有一个未记录的默认参数
现在,我所做的任何更改,包括对作业文件中所有内容的注释,在我运行队列时都不会看到。我仍然会得到同样的错误
我试着重新启动nginx
,php5 fpm
,supervisor
,beanstalkd
,然后运行:artisan缓存:清除
,artisan清除编译
,artisan优化
,composer dumpautoload
什么都不管用
让laravel看到作业文件更新的唯一方法是重新启动VM<代码>流浪者停止,然后流浪者上升
作业在控制台命令中触发,如下所示:
$this->dispatch(new SpecialJob($site->id));
以下是SpecialJob.php
文件的完整代码:
我尝试创建了另一个新工作并进行了测试,得到了相同的结果
所有其他非作业文件立即更新,没有问题。这只是工作文件。就像一个旧副本被缓存在我找不到的地方 运行队列工作程序时,必须告诉工作程序在代码更改后重新启动 由于守护进程队列工作进程是长期存在的进程,因此它们不会在不重新启动的情况下获取代码中的更改。因此,使用守护进程队列工作程序部署应用程序的最简单方法是在部署脚本期间重新启动工作程序。通过在部署脚本中包含以下命令,可以正常地重新启动所有工作进程:
php artisan queue:restart
您是否在队列工作程序上使用了
--daemon
标志?@ceejayoz是的,我是。您是否正在运行php artisan queue:restart
,如daemon文档中所示?@ceejayoz确实看到了,但我认为重新启动supervisor会做到这一点。D:当我运行那个命令时,它更新了!!:哎呀!很高兴你成功了,谢谢。我为这件事头痛了两天,哈哈P道德:永远不要假设。哇!那是个好主意!真不错!拉雷尔:D:D谢谢你,切亚约兹!天哪,我也经历过这个奇怪的问题,很高兴看到你的答案。我也帮了忙。这看起来很有趣:你今天救了我一天。在运行这个命令之后,它对我不起作用,然后队列:再次工作。旧代码仍然适用。请给我一个帮助