我是Laravel Queues的新手,只是构建了一个像这样的测试代码:
class TestController extends Controller {
public function testQueue2()
{
Queue::push('QueueController@fire', array('id' => 114));
}
,队列任务是:
class QueueController extends Controller {
public function fire($job, $data)
{
Log::info('This is some useful information.'.$data['id']);
}
比点击URL运行队列测试。 SQS运行良好,我的服务器日志获取这些信息:
[2015-06-07 15:53:04] production.INFO:这是一些有用的信息.14 [] []
[2015-06-07 15:53:36] production.INFO:这是一些有用的信息.14 [] []
[2015-06-07 15:53:37] production.INFO:这是一些有用的信息.14 [] []
[2015-06-07 15:54:09] production.INFO:这是一些有用的信息.14 [] []
[2015-06-07 15:54:10] production.INFO:这是一些有用的信息.14 [] []
[2015-06-07 15:54:42] production.INFO:这是一些有用的信息.14 [] []
我希望队列任务只执行一次,而不是6次,我该怎么办呢?
感谢。
答案 0 :(得分:0)
我假设您正在使用Laravel 4.2。来自文档:
push方法的第一个参数是应该用于处理作业的类的名称
我认为如果您不想使用Job类的fire
方法,则只需指定要使用的方法。
换句话说,尝试将代码修改为:
Queue::push('QueueController', array('id' => 114));
让你的控制器成为这项工作执行的实施者也有点奇怪,但那是另一回事。