PHP 在 Windows 上提供 Thread Safe (TS) 與 Non Thread Safe (NTS) 兩種建置版本,選擇錯誤會導致效能低落或穩定性問題。本文從架構原理、Web 伺服器搭配、VC 編譯器版本三個面向完整說明。
| Web Server | 執行模式 | 建議版本 | 說明 |
|---|---|---|---|
| IIS | ISAPI | Thread Safe | ISAPI 為多執行緒,需 TS 保護 |
| IIS | FastCGI | Non Thread Safe | FastCGI 多進程單執行緒,NTS 效能更好 |
| Apache | mod_php (DSO) | Thread Safe | Apache Worker MPM 為多執行緒 |
| Apache | FastCGI / PHP-FPM | Non Thread Safe | 推薦現代部署方式 |
| Nginx | FastCGI / PHP-FPM | Non Thread Safe | Nginx 僅支援 FastCGI |
選擇原則:
ISAPI 雖快,但 PHP 許多擴充套件以多進程設計,在多執行緒下易導致 IIS 崩潰。FastCGI 讓 PHP 進程可重複使用,兼顧效能與穩定性,且天然避免執行緒安全問題,因此搭配 NTS 版本為最佳實踐。
<?php phpinfo(); ?>
// 搜尋 "Thread Safety" 欄位:
// enabled = Thread Safe
// disabled = Non Thread Safe