搜尋

首頁  >  問答  >  主體

在線程安全和非線程安全 PHP 之間進行選擇:如何做出正確的決定?

我正在 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會更好,我還是不知道線程安全還是非線程安全是更好的選擇。

有人可以告訴我這些問題嗎?

P粉350036783P粉350036783370 天前639

全部回覆(1)我來回復

  • P粉033429162

    P粉0334291622023-12-24 15:46:59

    這是線程安全版本還是非線程安全版本?我怎麼知道?

    您可以使用舊的 phpinfo() 函數並尋找Thread Safety 欄位。

    如果您在 PATH 環境中設定了 PHP,您甚至可以使用快速命令透過 CLI 取得它 php -i | grep 線程

    什麼時候我應該選擇線程安全版本而不是非線程安全版本?

    根據PHP官方文件

    #

    我還不知道我的生產環境會是什麼樣子...

    #一般來說,TS 或 NTS 程式碼執行沒有區別。它更多地面向網頁伺服器。

    如果我沒記錯的話,預設情況下,XAMPP 使用 Apache Handler,因此它可能是線程安全的建置。是的,PHP8.1 的 Xdebug 二進位檔案可以正常運作。

    從技術上講,NTS 應該稍微快一些,因為它不需要考慮線程安全。

    就我個人而言,我認為這並不重要,除非您想花更多的時間來修改網頁伺服器,切換到FastCGI 或PHP-FPM,因為您仍處於開發階段,我認為堅持預設設定並專注於完成它會更有效率。

    回覆
    0
  • 取消回覆