Kry*_*ten 7 queue laravel laravel-4
情况如下:
我有一个Laravel 4.2应用程序,该应用程序从第三方API检索资产。这是一项长期资产(每12-24小时仅更改一次),并且非常耗时(一个大图像文件)。我确实缓存了资产,因此影响或多或少都已最小化,但是仍然有这样的情况,早上登录我的应用程序的第一个人必须等待应用程序首次加载资产。
我已经设置了一项工作,将排队等待并且每八小时运行一次。这应该确保缓存中的资产始终是新鲜的。它可以在作业运行八小时后重新入队。
问题是这样的:我将把这个工作系统部署到生产中,而且我不确定如何第一次运行它。
理想情况下,我希望有一个管理选项,其中有一个按钮,上面写着“单击此处提交作业”,但我想使其尽可能地简单并防止他人(我不是唯一的管理员)提交作业。为此,应用程序需要检查并查看作业是否已经在队列中。我找不到一种以实现独立的方式执行此操作的方法(我正在使用redis,但将来可能会更改)。
另一个选择是添加一个artisan命令来运行初始过程。这样,我可以部署该应用程序,运行一个artisan命令,而不必理会它。
因此,回顾一下,我有两个问题:
是否可以检查队列以查看其中有哪些作业?
有一个更好的方法吗?
谢谢
Eri*_*ich -1
如果它保证是队列中唯一的东西,你可以使用类似的东西:
if (Queue::size() === 0) {
Queue::push(...);
}
Run Code Online (Sandbox Code Playgroud)