2014-12-05 60 views
0

我想知道是否有人能够帮助我理解Laravel 4队列系统。使用Laravel 4队列

我想将其用于CSV文件的后台处理,以便用户可以上传CSV文件并继续使用系统,而CSV正在做它需要在后台执行的操作,但似乎不是加工。

在我的控制,我有以下几点:

// Push the import into the queue 
Queue::push('[email protected]', array('filename' => $filename, 'fileext' => $fileExt)); 

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

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

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

我以为如果你将某些东西推到队列中,它会在用户继续使用系统时在后台执行。

有人能告诉我哪里会出错,也许帮助我需要做什么。

干杯,

+0

你不能“排队”上传。这听起来像你想要做的是ajax上传。 – Laurence 2014-12-05 04:33:55

+0

我不排队上传,即时处理CSV ......在push命令在 – BigJobbies 2014-12-05 04:41:30

+1

之前完成上传您在配置中使用了哪个队列系统?它不能'同步' - 必须是redis,beanstalkd等 – Laurence 2014-12-05 06:38:48

回答

1

如果你谈论的是上传文件的时候,它是不是一个队列的问题。你需要使用AJAX,他的用户可能无法离开页面。

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

尝试增加几分钟的延迟,看看用户将有一个结果,而队列尚未处理:

$date = Carbon::now()->addMinutes(15); 
Queue::later($date, '[email protected]', array('message' => $message)); 

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