Php 事件和作业未从Laravel事件侦听器内部触发
我有一个事件监听器,它从数据库中的记录创建并保存一个pdf文件 此过程正确完成,然后我记录结果并希望触发作业或其他事件,但两者都不会运行 如果我从一个控制器运行,它们的执行都是完美的 句柄方法如下所示:Php 事件和作业未从Laravel事件侦听器内部触发,php,laravel,laravel-5,event-listener,Php,Laravel,Laravel 5,Event Listener,我有一个事件监听器,它从数据库中的记录创建并保存一个pdf文件 此过程正确完成,然后我记录结果并希望触发作业或其他事件,但两者都不会运行 如果我从一个控制器运行,它们的执行都是完美的 句柄方法如下所示: /** * Handle the event. * * @param SaveRecordPdf $event * @return void */ public function handle(SaveRecordPdf $event) { $record = $event
/**
* Handle the event.
*
* @param SaveRecordPdf $event
* @return void
*/
public function handle(SaveRecordPdf $event)
{
$record = $event->record;
if ($this->service->publish($record)) {
Log::info($record->published_filename . ' was stored successfully.');
// fire publish job
PublishFile::dispatch($record);
}
}
发生这种情况的原因是否已知?请尝试在存储库中运行以下命令:
composer dumpautoload&&php artisan clear compiled
事件仅在单个php进程执行的上下文中工作。如果你发射了一个,但过程结束了,就没有什么可以处理了。也许可以考虑实现ShouldQueue?它实现ShouldQueue。但是queue:work
似乎并没有拾取处理程序中发出的事件。如果我运行queue:listen
,它会正确地拾取并激发它们。