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

2021-10-01 03:57:47 字數 1310 閱讀 6885

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模式是建立在多程序的基礎之上的,而非多執行緒。

為了兼顧iis下php的效率和安全,微軟給出了fastcgi的解決方案。fastcgi可以讓php的程序重

復利用而不是每乙個新的請求就重開乙個程序。同時fastcgi也可以允許幾個程序同時執行。這樣既解決

因此,如果是使用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 執行緒安全與非執行緒安全版本的區別深入解析

從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,非執行緒安全 之分,這兩者不同在於何處?到底應該用哪種?這裡做乙個簡單的介紹 從2000年10月20日發布的第乙個windows版的php3.0.17開始的都是執行緒安全的版...

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

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