2014-12-05 101 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