Home avatar

Miles Chou

天涯何處無幹話,何必要講實務話

改善 PHP 測試階段的效能(二):ParaTest 與環境層加速

延續改善 PHP 測試階段的效能,當時講的是「程式 / 參數調校」(xdebug 關掉、phpcs --parallel、生命週期管理)的加速。本篇紀錄後續走過的三條路:

  1. PHPUnit → ParaTest 切換:從單一 process 的 PHPUnit 換成 ParaTest 多 worker 平行
  2. 環境層加速:schema 合併、MySQL datadir 改 tmpfs
  3. FormRequest 抽出單元測試:把驗證邏輯從 Feature Test 拉出來,改用不啟動 Laravel app 的單元測試

這篇文章由 Claude Opus 4.7 模型產生,人工微調內容完成。

Laravel Queue + RabbitMQ 實作經驗

近一兩年使用 Laravel Queue 搭配 RabbitMQ 來做非同步或排程任務處理的解決方案,但過程中遇到各種奇怪的問題,小則是單純的連線錯誤,重連就能解決,大則是會一直無法正常消化 Queue,造成整個 Queue 塞車並影響整個服務運作。

最近認真的去研究 RabbitMQ 連線的機制,並尋找問題可能的解法,在最近一次解法實驗上線時,發現了新的問題,至少總算是有初步了解問題核心了,這篇文章是來記錄這些經驗。

PHP 的 in_array 效能測試

這是很久以前發現,但還沒有很認真實測過的問題:當在一個 array 裡尋找符合的元素時,下面這些方法的效能到底誰快誰慢?

  • in_array()
  • array_intersect()
  • array_flip() + array_key_exists()