【问题标题】:Laravel-4 : how to use queues to create a daemonLaravel-4:如何使用队列创建守护进程
【发布时间】:2013-12-31 11:23:31
【问题描述】:

我需要创建一个 Laravel 守护程序来从网络获取一些数据并将它们存储在数据库中。我想在 Laravel 中执行此操作,以便使用 Eloquent 进行查询。我被告知要查看队列,但正如我在文档中看到的那样,如果您首先访问 url,则会调用队列。有没有办法启动一个队列并让它永远运行?队列可以在我的本地环境中工作吗?到目前为止,我有以下代码:

routes.php:

Route::get('daemon', function(){

    Queue::push('SendEmail', []);

});

发送电子邮件.php

<?php 

class SendEmail {

    public function fire($job, $data)
    {
       dd('ok');
    }

}

但是我得到类 SendEmail 不存在

【问题讨论】:

  • 我认为你最好使用 cronjob
  • 你能给我一些反馈吗?我是 laravel 的新手,我需要一些关于如何实施你的建议的建议。
  • 查看类似glenntaylor.co.uk/blog/read/laravel-queues-with-beanstalkd 的关于 Laravel 队列的教程,它将真正帮助您了解队列的工作原理。

标签: php mysql laravel-4 localserver


【解决方案1】:

如果您想每 n 分钟运行一次任务,您可能应该在 artisan command 上运行一个 cronjob。这将更适合您的用例。

队列是不同的。它们被用于在队列列表中堆叠任务。在后台运行一个监听器,等待新任务。也检查docs。您可以在控制台中通过php artisan queue:listen 启动监听器。文档建议使用 supervisord 来管理该任务,尽管它不是必需的。只要您不终止侦听器,它就会运行。

但是,您也可以将工匠命令与队列结合使用。例如。通过 cronjob 运行命令,生成新的排队任务。队列监听器稍后将运行这些任务。

另外,请检查 this very good answer 的 cronjob 与队列。

【讨论】:

  • 我应该把队列放在哪里...我需要它运行而不需要调用 url...
  • 非常感谢..是否有某种教程可以学习如何使用 cron..?
  • 是的,here。如果您接受我的回答,我将不胜感激。
【解决方案2】:

你可能已经保存了 Laravel 不知道在哪里查找的 SendEmail 类。

如果您使用的是 composer,然后查看 composer.json 以及 'autoload' 和 'classmap' 数组,然后在其中添加您的目录。记得运行“composer dump-autoload”或“composer update”。

或者尝试将您的目录添加到 app/start/global.php 类加载器函数。这应该有助于找不到类。

【讨论】:

    【解决方案3】:

    如果你想创建一个队列'worker'进程并让它永远运行,你应该看看这个:http://supervisord.org/ Supervisor 将监视你的(worker)进程,如果它退出,它将重新启动它,失败致命错误等。

    【讨论】:

      猜你喜欢
      • 2016-05-31
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      相关资源
      最近更新 更多