我在运行在Homestead VM的Laravel 5.1应用程序中创建了一个新作业,将其设置为排队,并在handle方法中编写了代码。
handle()方法之前需要传递参数,但现在不再需要,并且我已经从handle方法中删除了参数。
然而,当队列运行作业时,我会收到一个错误,内容如下:
[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 cache:clear
、artisan clear-compiled
、artisan optimize
、composer dumpautoload
。
什么都没有用。
唯一让laravel看到作业文件更新的方法是重新启动虚拟机。vagrant halt
,然后vagrant up
。
该作业是像这样在控制台命令中触发的:
$this->dispatch(new SpecialJob($site->id));
这是SpecialJob.php
文件的全部代码:
我尝试创建了另一个新的Job并进行了测试,结果相同。
所有其他非Job文件都会立即更新,没有问题。只有Job文件出现了问题。就像旧版本被缓存到了我找不到的某个地方。
--daemon
标志吗? - ceejayozphp artisan queue:restart
命令? - ceejayoz