我有 Laravel 应用程序,它使用排队作业通过 API 从外部服务检索数据。作业可以按用户或按计划启动。
我使用标准队列:由主管监督的工作。队列驱动程序是数据库。
我将 API 设置存储在数据库中,并在每次启动加载过程时(换句话说 - 每次启动新作业时)从数据库中读取它们。
但是当用户更改这些设置(并且控制器通过 $myModelObject->save() 更新数据)时,我可以看到该作业仍然使用旧的过时设置,直到它重新启动(手动或根据队列设置)。尽管它在用户进行更改后从数据库读取数据。
似乎它使用了一些缓存数据并且缓存不会对从作业外部进行的数据更新做出反应)
所以问题是 - 如何在不使用缓存的情况下强制作业从数据库读取数据(全部或一些关键数据)?
我知道我可以:
使用队列:代替监听
使用 queue:work --stop-when-empty 和之前的一样
在我的案例中,我已经使用“listen”解决了这个问题,因为我没有太多的工作来关心使用这么多的内存。但如果我有呢?
提前感谢任何线索。