我有一个引发Product
事件retrieved
的模型ProductRetrieved
和一个根据API路径(if-else条件)引发异常的侦听器CheckProductValidity
。
此外,我已经在Console\Kernal.php
中实现了一个更新查询,该查询每天在00:00小时运行。
问题: CheckProductValidity
引发计划任务的异常。如何在侦听器中设置异常,以允许在调度程序完成后检索模型Product
数据。
可能的解决方案::使用unsetEventDispatcher
和setEventDispatcher
,但有时此更新查询可能比平时花费更多的时间。另外,cron还会发送通知并处理作业(全部取决于Product
),以免引起问题。
答案 0 :(得分:0)
这不是真正的解决方案,但这是我解决的方法。
// fix to catch if artisan schedule:run has intiated this check;
$parameters = app('request')->server->get('argv');
$allowed_commands = ['schedule:run', 'migrate:refresh', 'db:seed', 'queue:work'];
if ($parameters[0]==='artisan'
&& in_array($parameters[1], $allowed_commands))
return true;
我在侦听器中添加了这段代码,该代码将检查请求是artisan
命令还是route
的结果。