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

2021-09-07 06:52:22 字數 1054 閱讀 4234

windows版的php從版本5.2.1開始有thread safe。這兩者不同在於何處?到底應該用哪種?這裡做乙個簡單的介紹。

從2023年10月20日發布的第乙個windows版的php3.0.17開始的都是執行緒安全的版本,這是由於與linux/unix系統是採用 多程序的工作方式不同的是windows系統是採用多執行緒的工作方式。如果在iis下以cgi方式執行php會非常慢,這是由於cgi模式是建立在多程序 的基礎之上的,而非多執行緒。一般我們會把php配置成以isapi的方式來執行,isapi是多執行緒的方式,這樣就快多了。但存在乙個問題,很多常用的 php擴充套件是以linux/unix的多程序思想來開發的,這些擴充套件在isapi的方式執行時就會出錯搞垮iis。而用執行緒安全版本的話頂多只是搞跨某個 執行緒,而不會影響到整個iis的安全。

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

德問社群】 

這個主要是針對web server 而言,在windows環境下,如果你使用的web server 是apchae 或者 iis 7以下版本,則應該選擇執行緒安全的安裝檔案,而如果你使用fast-cgi模式時,可以選擇非執行緒安全,因為 web sever 本身能保證執行緒安全。

當然還有二進位制檔案編譯時所使用的編譯器:vc9 (vs系列) vc6(gcc)

如樓上所言,是針對web server的,部分web server在處理應用請求的時候是用多執行緒而非多程序的方式處理,執行緒方式因為涉及到共享暫存器和記憶體,所以很容易出錯,這個時候程式就需要花一些額外的經歷去處理暫存器中的資料一致性,即保證執行緒安全。

所以是否採用執行緒安全主要看你的web server所採用的php請求處理方式,如果是多執行緒處理,那麼請選擇執行緒安全的,否則選擇非執行緒安全的,如樓上所說fast-cgi方式可選擇非執行緒安全的

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

windows版的php從版本5.2.1開始有thread safe。這兩者不同在於何處?到底應該用哪種?這裡做乙個簡單的介紹。從2000年10月20日發布的第乙個windows版的php3.0.17開始的都是執行緒安全的版本,這是由於與linux unix系統是採用 多程序的工作方式不同的是win...

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

windows版的php從版本5.2.1開始有thread safe。這兩者不同在於何處?到底應該用哪種?這裡做乙個簡單的介紹。從2000年10月20日發布的第乙個windows版的php3.0.17開始的都是執行緒安全的版本,這是由於與linux unix系統是採用 多程序的工作方式不同的是win...

Java執行緒安全和非執行緒安全

arraylist是非執行緒安全的,vector是執行緒安全的 hashmap是非執行緒安全的,hashtable是執行緒安全的 stringbuilder是非執行緒安全的,stringbuffer是執行緒安全的 什麼是執行緒安全?執行緒安全和非執行緒安全有什麼區別?分別在什麼情況下使用?非執行緒安...