laravel 5.1在没有VM重启的情况下看不到对Job文件的更改

Nic*_*iwi 10 php laravel laravel-5 homestead

我在一个laravel 5.1应用程序中创建了一个新的Job,在Homestead VM中运行.我已将其设置为排队并在handle方法中包含代码.

handle()方法之前预期传递一个param,但不再需要,我从handle方法中删除了param.

但是,当队列运行作业时,我收到一条错误消息:

[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
Run Code Online (Sandbox Code Playgroud)

该文件的第31行是:

public function handle()
Run Code Online (Sandbox Code Playgroud)

它不再期望任何参数,除非有一个没有记录的默认参数.

现在我做的任何更改,包括注释,当我运行队列时,看不到作业文件中的所有内容.我仍然会得到同样的错误.

香港专业教育学院试图重新启动nginx,php5-fpm,supervisor,beanstalkd,和正在运行:artisan cache:clear,artisan clear-compiled,artisan optimize,composer dumpautoload.

什么都行不通.

我得到laravel看到任何更新到Job文件的唯一方法是重启VM.vagrant halt那么vagrant up.

该作业在控制台命令中触发,如下所示:

$this->dispatch(new SpecialJob($site->id));
Run Code Online (Sandbox Code Playgroud)

以下是该SpecialJob.php文件的完整代码:

http://laravel.io/bin/qQQ3M#5

我尝试创建另一个新Job并进行测试,得到相同的结果.

所有其他非作业文件立即更新,没有问题.它只是作业文件.就像旧的副本被缓存在我无法找到的地方.

cee*_*yoz 31

将队列工作程序作为守护程序运行时,必须告知工作程序在代码更改后重新启动.

由于守护程序队列工作程序是长期存在的进程,因此它们不会在未重新启动的情况下获取代码中的更改.因此,使用守护程序队列工作程序部署应用程序的最简单方法是在部署脚本期间重新启动工作程序.您可以通过在部署脚本中包含以下命令来优雅地重新启动所有工作程序:

php artisan queue:restart
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.哈哈,我头撞了2天!:P道德:永远不要假设. (3认同)