網頁開發

Laravel 13.8.0 把零停機部署縮成一行——為什麼每個 PHP 工作室都該在這個週末升級

2026.05.09 · 115 次瀏覽
Laravel 13.8.0 把零停機部署縮成一行——為什麼每個 PHP 工作室都該在這個週末升級

全佇列掃描、Worker 暫停/恢復事件、SortDirection enum 支援——是小版號,但對「重佇列、重生產」的團隊影響很大

Laravel 13.8.0 在 2026 年 5 月 6 日釋出。乍看是個小版號的維護更新,但裡面藏的三件事,把過去十年 Laravel PHP 工作室部署時最痛的三個盲點一次補完了。如果你的後台有跑佇列、有跑排程、有跑長時間的對帳或匯入,請務必把這個版本納入這週的維運排程。


一、allReservedJobs() / allDelayedJobs() / allPendingJobs():再也不用 SSH 進去猜佇列裡有什麼


過去幾年常見的部署事故:你 push code、執行 deploy script、要 supervisor 殺掉 worker 重啟——但你不知道某條 queue 上正在跑一個 4 小時的對帳任務。結果 worker 中斷、資料半掛、客戶半夜打電話。


Laravel 13.8.0 加了三個方法:Queue::allReservedJobs()Queue::allDelayedJobs()Queue::allPendingJobs()。一次呼叫,跨所有連線、跨所有佇列、回傳一個 InspectedJob 集合,每筆有 uuid、name、attempts、createdAt。資料庫驅動、Redis 驅動、fake driver 都支援。


實務上,這意味著你的 deploy script 第一行可以改成:「如果 allReservedJobs 不為空,且名稱屬於白名單長任務,先 hold 30 秒、再重試三次、最後才放行重啟 worker」——一個下午寫得完的東西,可以幫工作室擋掉 9 成的「部署中砍到正在跑的任務」事故。


二、WorkerPausing / WorkerResuming 事件:Worker 進入維護模式有正式 hook


Worker 收到 SIGUSR2 會發 WorkerPausing;收到 SIGCONT 會發 WorkerResuming。這在過去要靠 supervisor 的 stderr 撈、或自己塞 hooks。現在是一級事件——你可以直接在 EventServiceProvider 訂閱、推 Slack、推 LINE Notify、寫稽核 log,連工作室常用的 BetterStack/Sentry 都能直接接。


三、SortDirection enum 支援與 assertSessionMissingInput()


查詢建構器的 orderBy()orderByDesc()orderByRaw() 現在原生接受 PHP 8.6 的 SortDirection enum,告別字串 'asc' / 'desc' 拼錯產線炸鍋的悲劇。TestResponse::assertSessionMissingInput() 補完 flash old input 的對稱測試斷言——之前只有 assertSessionHasInput(),現在兩邊都齊了。


四、為什麼這個版本對 PHP 工作室特別重要


Laravel 13 主版本(2026 年 3 月)已經把 Laravel AI SDK 拉成一級組件,但很多人忽略了 13.x 的 minor release 才是真正讓老產線受惠的地方。13.8.0 的這幾個改動,本質都是把過去要靠 Horizon、Telescope、自寫 middleware、自寫 Artisan 指令才能做到的事,沉到核心。對外包工作室來說,這代表你交付給客戶的後台,少維護一層第三方依賴,少一份升級成本。


我的觀點


Laravel 真正贏的長期戰,是把「部署日的恐懼」「凌晨被打電話的恐懼」「升級框架的恐懼」一個個吃掉。其他框架在比 React Server Components、比 Edge runtime、比 Bun-vs-Node,Laravel 在比「你的客戶禮拜五下班前安全部署」。十三年的東西能繼續長青,靠的不是創新詞彙,是一個版本一個版本把現實生產環境的痛點寫進核心。對台灣的 PHP 接案工作室——你的客戶買的不是「框架」,是「禮拜五下班前能不慌」。13.8 是你下次給客戶報價時,可以理直氣壯多收 5–10% 維運費的籌碼。


資料來源