簡體   English   中英

為什么默認禁用 PHP ZTS?

[英]Why PHP ZTS is disabled by default?

為什么ZTS默認是關閉的,需要編譯PHP源碼來實現Threading能力? 當我們啟用ZTS時是否有任何限制或副作用? 不穩定嗎?

PHP 最初是作為 CGI 二進制文件開始的,然后作為 Apache 的模塊。 這兩種方式都不需要 PHP 成為線程運行時,因為它們都會按順序處理請求。

When support for other web servers, most notably Microsoft's IIS through their ISAPI interface, was added, their processing model required PHP to be able to run as a threaded process. PHP 添加了“ZTS”(Zend 線程安全)模式,該模式做了相當多的工作,以確保並行(線程)運行的請求不會相互踩到對方的腳趾。 但這確實是以性能為代價的

由於大多數 web 服務器 API 不需要啟用 ZTS,因此 PHP 的默認設置是關閉。 如果您要為 ISAPI SAPI(服務器抽象)層構建 PHP,那么 PHP 構建過程會自動打開 ZTS 模式。

說了這么多,ZTS 模式並不是要允許PHP腳本中的線程,而是允許 PHP 本身在線程環境中運行。 如果您對從 PHP 腳本的角度並行運行事物感興趣,則需要求助於第三方擴展,例如 Joe 的並行擴展或swoole

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM