我從未設置過排隊系統。我決定給它一個鏡頭。看起來排隊系統工作正常。但是,它似乎沒有正確發送數據。這是我的代碼。使用Laravel 4.1和Beanstalkd將數據傳遞給隊列類
...
$comment = new Comment(Input::all());
$comment->user_id = $user->id;
$comment->save();
if ($comment->isSaved())
{
$voters = $comment->argument->voters->unique()->toArray();
Queue::push('Queues\NewComment',
[
'comment' => $comment->load('argument', 'user')->toArray(),
'voters' => $voters
]
);
return Response::json(['success' => true, 'comment' => $comment->load('user')->toArray()]);
}
...
處理這個看起來像這樣的類:
class NewComment {
public function fire($job, $data)
{
$comment = $data['comment'];
$voters = $data['voters'];
Log::info($data);
foreach ($voters as $voter)
{
if ($voter['id'] != $comment['user_id'])
{
$mailer = new NewCommentMailer($voter, $comment);
$mailer->send();
}
}
$job->delete();
}
}
這精美的作品使用同步隊列駕駛我的本地服務器上。但是,在我的生產服務器上,我使用Beanstalkd。隊列正在按照預期發射。但是,我得到這樣的錯誤:
[2013-12-19 10:25:02] production.ERROR: exception 'ErrorException' with message 'Undefined index: voters' in /var/www/mywebsite/app/queues/NewComment.php:10
如果我打印出來的$data
變量傳遞到NewComment
隊列處理程序,我得到這樣的:
[2013-12-19 10:28:05] production.INFO: {"comment":{"incrementing":true,"timestamps":true,"exists":true}} [] []
我不知道這是爲什麼發生。任何人都有一個想法如何解決這個問題。