PHP 執行緒安全與非執行緒安全版本的區別深入解析

2021-07-23 21:03:06 字數 1138 閱讀 5210

windows版的php從版本5.2.1開始有thread safe(執行緒安全)和none thread safe(nts,非執行緒安全)之分,這兩者不同在於何處?到底應該用哪種?這裡做乙個簡單的介紹

從2023年10月20日發布的第乙個windows版的php3.0.17開始的都是執行緒安全的版本,這是由於與linux/unix系統是採用多程序的工作方式不同的是windows系統是採用多執行緒的工作方式。如果在iis下以cgi方式執行php會非常慢,這是由於cgi模式是建立在多程序的基礎之上的,而非多執行緒。

因此,如果是使用isapi的方式來執行php就必須用thread safe(執行緒安全)的版本;而用fastcgi模式執行php的話就沒有必要用執行緒安全檢查了,用none thread safe(nts,非執行緒安全)的版本能夠更好的提高效率。

php官方上關於widows的版本有4個:vc9 x86 non thread safe,vc9 x86 thread safe,vc6 x86 non thread safe,vc6 x86 thread safe;那麼有什麼區別呢?

1.支援的伺服器不同

vc9版本是針對iis伺服器的版本,沒有對apache的支援,而vc6版本對iis和apache都提供了支援

vc6 是什麼?

vc6 就是 legacy visual studio 6 compiler ,就是使用這個編譯器編譯的。

vc9 是什麼?

vc9 就是 the visual studio 2008 compiler ,就是用微軟的 vs 編輯器編譯的。

2.執行方式的不同

php有2中執行方式:isapi和fastcgi。

isapi執行方式是以dll動態庫的形式使用,可以在被使用者請求後執行,在處理完乙個使用者請求後不會馬上消失,所以需要進行執行緒安全檢查,這樣來提高程式的執行效率,所以如果是以isapi來執行php,建議選擇thread safe版本;

而fastcgi執行方式是以單一執行緒來執行操作,所以不需要進行執行緒的安全檢查,除去執行緒安全檢查的防護反而可以提高執行效率,所以,如果是以fastcgi來執行php,建議選擇non thread safe版本。

對於apache伺服器來說一般選擇isapi方式,而對於nginx伺服器則選擇fastcgi方式。

PHP 執行緒安全與非執行緒安全版本的區別

windows版的php從版本5.2.1開始有thread safe 執行緒安全 和none thread safe nts,非執行緒安全 之分,這兩者不同在於何處?到底應該用哪種?這裡做乙個簡單的介紹。從2000年10月20日發布的第乙個windows版的php3.0.17開始的都是執行緒安全的版...

PHP 執行緒安全與非執行緒安全版本的區別深入解析

從2000年10月20日發布的第乙個windows版的php3.0.17開始的都是執行緒安全的版本,這是由於與linux unix系統是採用多程序的工作方式不同的是windows系統是採用多執行緒的工作方式。如果在iis下以cgi方式執行php會非常慢,這是由於cgi模式是建立在多程序的基礎之上的,...

PHP執行緒安全與非執行緒安全的區別

原文 windows版的php從版本5.2.1開始有thread safe 執行緒安全 和none thread safe nts,非執行緒安全 之分,這兩者不同在於何處?到底應該用哪種?這裡做乙個簡單的介紹。因此,如果是使用isapi的方式來執行php就必須用thread safe 執行緒安全 的...