我需要创建一个Laravel守护进程,从网络中获取一些数据并将它们存储在数据库中,我想用Laravel来实现这一点,以便在我的查询中使用雄辩的语言。我被告知要查看队列,但正如我在文档中看到的那样,如果首先访问url,就会调用队列。有什么方法可以启动一个队列并使它永远运行吗?队列在本地环境中工作吗?到目前为止,我有以下代码:
routes.php:
Route::get('daemon', function(){
Queue::push('SendEmail', []);
});SendEmail.php
<?php
class SendEmail {
public function fire($job, $data)
{
dd('ok');
}
}但是我得到了类SendEmail不存在
发布于 2013-12-31 12:28:59
如果您想每n分钟运行一次任务,您可能应该在工匠指挥上运行一个cron作业。这将更适合您的用例。
排队是不一样的。它们用于在队列列表中堆叠任务。后台是正在运行的监听器,等待新任务。也检查一下文档。您可以通过控制台中的php artisan queue:listen启动监听器。医生建议用监督来管理那项任务,尽管没有必要。只要不终止侦听器,侦听器就会运行。
但是,您也可以将手工命令与队列结合起来。例如,通过cron作业运行一个命令,该命令生成新的排队任务。队列侦听器稍后将运行这些任务。
另外,检查这个很好的答案中的cron作业与队列。
发布于 2014-09-05 22:18:26
您可能已经保存了Laravel不知道在哪里查找的SendEmail类。
如果您使用的是composer,那么查看composer.json和'autoload‘和'classmap’数组,然后在那里添加您的目录。记得运行‘作曲家转储-自动加载’或‘作曲家更新’。
或者尝试将您的目录添加到app/start/global.php ClassLoader函数中。这对找不到的类有帮助。
发布于 2013-12-31 12:20:40
如果您想要创建一个队列'worker‘进程并让它永远运行,那么您应该看一看:http://supervisord.org/主管将监视您的(worker)进程,如果它退出,在发生致命错误时会重新启动它,等等。
https://stackoverflow.com/questions/20856580
复制相似问题