3

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

路线.php:

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

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

});

发送电子邮件.php

<?php 

class SendEmail {

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

}

但我得到类 SendEmail 不存在

4

3 回答 3

8

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

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

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

另外,检查这个非常好的cronjobs 与队列的答案。

于 2013-12-31T12:28:59.230 回答
2

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

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

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

于 2014-09-05T22:18:26.990 回答
1

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

于 2013-12-31T12:20:40.153 回答