首先,Thread Safe 是指程序在運行時需對線程(thread)進行安全檢查,以防止有新要求就啟動新線程的 CGI 執行方式耗盡系統資源。None Thread Safe 則指程序在運行時不對線程進行安全檢查。
再來看 PHP 的兩種服務模式:ISAPI 和 FastCGI 。ISAPI 服務模式是以 DLL 動態庫的形式被調用,可以在被用戶請求后執行,在處理完一個用戶請求后不會馬上消失,所以需要進行線程安全檢查,這樣來提高程序的執行效率。而 FastCGI 執行方式則是以單一線程來執行操作,所以不需要進行線程的安全檢查,除去線程安全檢查反而可以提高執行效率。
所以,簡單的概括就是當 PHP 以 ISAPI 模式運行服務時,選擇 Thread Safe 版本;以 FastCGI 模式運行服務時,選擇 Non Thread Safe 版本。可以通過 phpinfo() 函數頁面里的 Thread Safety 項查詢當前 PHP 版本是不是線程安全的。
注:ISAPI 和 FastCGI 無需在 PHP 中設置,其取決於Web Server(Apache、IIS、Nginx)以哪種模式與 PHP 合作完成服務。