古詩詞大全網 - 成語大全 - PHP線程安全和非線程安全有什麽區別

PHP線程安全和非線程安全有什麽區別

1、windows + IIS + FastCGI :使用非線程安全版本。

解釋:

以FastCGI方式安裝PHP時,PHP擁有獨立的進程,並且FastCGI是單壹線程的,不存在多個線程之間可能引發的相互幹擾(這種幹擾通常都是由於全局變量和靜態變量導致的)。由於省去了線程安全的檢查,因此使用FastCGI方式比ISAPI方式的效率更高壹些。

2、windows + IIS + ISAPI :使用線程安全版本。

解釋:

PHP以ISAPI方式安裝時,PHP沒有獨立的進程,而是作為DLL被IIS加載運行的,即是依附於Web服務器進程的。當Web服務器運行在多線程模式下(IIS正是這種情況),PHP自然也就運行在多線程模式下。只要是在多線程模式下運行,就可能存在線程安全問題,因此應選擇PHP的線程安全版本。

3、windows + Apache + PHP(模塊) :使用線程安全版本。

解釋:

如果要在Apache中以模塊方式安裝PHP,則應該使用PHP的線程安全的版本。原因是當PHP作為Apache的模塊安裝時,PHP沒有獨立的進程,而是作為模塊以DLL的形式被加載到Apache中的,是隨Apache的啟動而啟動的,而Windows下的Apache為多線程工作模式,因此PHP自然也就運行在多線程模式下。因此,這種情況下應使用PHP的線程安全版本。