使用Laravel 4队列

时间:2014-12-05 01:26:28

标签: php laravel laravel-4

我想知道是否有人可以帮我理解Laravel 4队列系统。

我想将它用于CSV文件的后台处理,以便用户可以上传CSV文件并继续使用系统,而CSV在后台执行它需要做的事情,但它似乎没有工作

在我的控制器中,我有以下内容:

// Push the import into the queue
Queue::push('QueueController@importCSV', array('filename' => $filename, 'fileext' => $fileExt));

// Everything sorted, return success
return Response::json('success', 200);

在我的QueueController中是导入CSV数据的所有逻辑。

我的问题是,当我使用上面的代码推送到队列时,它等待导入完成,直到它返回响应,因为CSV非常大,在获得成功响应之前需要几分钟。 / p>

我想如果你把东西推到队列中,它会在用户继续使用系统时在后台运行。

有人可以告诉我哪里出错了,也许可以帮助解决我需要做的事情。

干杯,

1 个答案:

答案 0 :(得分:1)

如果您正在谈论上传文件的时间,那么这不是一个队列问题。您需要使用某些东西作为AJAX,并且用户可能无论如何都无法离开页面。

如果您正在谈论在上传CSV之后处理CSV的实际时间,您还需要确保让Beanstalkd正在处理队列。

尝试添加几分钟的延迟,看看用户是否在未处理队列时有结果:

$date = Carbon::now()->addMinutes(15);
Queue::later($date, 'SendEmail@send', array('message' => $message));

参考:http://laravel.com/docs/4.2/queues