在前一天的ProjectInvitationController中,使用者在邀請別的使用者加入計畫時,需要先寄出email,再返回到計畫頁面,此時使用者就會稍微觀察到頁面重載的狀況,但是如果ProjectInvitationController中加入越來越多的行為,就會越明顯地觀察到頁面重載的狀況。
class ProjectInvitationController extends Controller
{
public function store(InvitationRequest $request, Project $project)
{
$validated = $request->validated();
$invitedMember = User::whereEmail($validated['email'])->first();
Mail::to($invitedMember->email)->send(new InvitationInformed($invitedMember, $project));
$project->invite($invitedMember);
假如加入越來越多的行為...
return redirect(route('project.show', compact('project')));
}
}
但我們只要求將邀請的成員加入member_project表中的行為在返回頁面前發生,剩下的行為其實可以稍後處理,這時候就可以使用駐列(Queue),一旦將這些行為加入駐列後就可以繼續進行,所以我們只要將寄email等等的行為加到駐列後即可返回頁面,就不會感到明顯的頁面重載。
所以明天要介紹Laracast的Queue It Up系列。
參考文章:
Queqe It Up
Message Queues & PubSub Systems