我正在 Windows 10 中開發 Laravel 9.x 應用程式。我目前的 PHP 版本是 PHP 8.1.5 (cli) (build: Apr 12 2022 17:38:57) (ZTS Visual C 2019 x64)
。這是線程安全版本還是非線程安全版本?我怎麼知道?我什麼時候應該選擇線程安全版本而不是非線程安全版本?
我嘗試在StackOverflow 上研究這個問題,但我看到的問題/答案似乎都有十年或更久了- 就像這樣- 我強烈懷疑如果我今天問這個問題,我可能會得到不同的答案只是因為科技在這幾年裡發生了變化。這是一個合理的假設嗎? (至少,我目前版本的 PHP 顯然使用了更新的編譯器 VC 2019,而不是 VC6 或 VC9。)
我還不知道我的生產環境會是什麼樣,甚至不知道我正在開發的應用程式是否會進入生產環境,因為它只是我正在編寫的一個用於(重新)學習 Laravel 的應用程式。到時候我可能會把它投入生產,作為 Laravel 應用程式的演示,但它是否會在託管服務、Netlify 或其他東西上,我現在還不知道。
只是為了給您一些背景信息,這個問題只是因為我試圖學習如何單步執行 Laravel 原始碼來調試問題而出現,這顯然需要我將 XDebug 添加到 XAMPP。我找到的安裝 XDebug 的說明將我指向此處,並建議我下載適用於我的 PHP 版本的 Windows 二進位。沒有 8.1.5 的二進位文件,所以我不知道 8.1 的二進位檔案之一是否可以工作,或者我是否最好使用 8.1 線程安全或 8.1 非線程安全。如果我的PHP先升級到8.2會更好,我還是不知道線程安全還是非線程安全是更好的選擇。
有人可以告訴我這些問題嗎?
這是線程安全版本還是非線程安全版本?我怎麼知道?
您可以使用舊的
phpinfo()
函數並尋找Thread Safety
欄位。如果您在 PATH 環境中設定了 PHP,您甚至可以使用快速命令透過 CLI 取得它
php -i | grep 線程
什麼時候我應該選擇線程安全版本而不是非線程安全版本?
根據PHP官方文件
#我還不知道我的生產環境會是什麼樣子...
#一般來說,TS 或 NTS 程式碼執行沒有區別。它更多地面向網頁伺服器。
如果我沒記錯的話,預設情況下,XAMPP 使用 Apache Handler,因此它可能是線程安全的建置。是的,PHP8.1 的 Xdebug 二進位檔案可以正常運作。
從技術上講,NTS 應該稍微快一些,因為它不需要考慮線程安全。
就我個人而言,我認為這並不重要,除非您想花更多的時間來修改網頁伺服器,切換到FastCGI 或PHP-FPM,因為您仍處於開發階段,我認為堅持預設設定並專注於完成它會更有效率。