2011-08-26 151 views
62

我正在下載Windows的PHP。我在網站上有2個選項。PHP線程安全和非線程安全的Windows

  1. PHP線程安全
  2. PHP非線程安全

請回答以下問題:

  1. 兩者有什麼區別?彼此的優點和缺點是什麼?
  2. 我正在開發一個電子商務網站,它將有大量的流量,哪一個更值得推薦,爲什麼?
+1

可能的重複[什麼是線程安全或非線程安全的PHP](http://stackoverflow.com/questions/1623914/what-is-thread-safe-or-non-thread-safe-in-php ) – Shef

+0

你對「交通繁忙」有什麼瞭解?你如何確定你會得到它? – Crack

+0

@ Crack-流量大意味着許多用戶會在特定時間使用該網站。爲什麼我不能確定?!有什麼問題嗎? –

回答

69

從PHP文件:

線程安全意味着二進制可以在多線程Web服務器環境中工作,如Apache 2在Windows上。線程安全通過在每個線程中創建本地存儲副本來工作,以便數據不會與另一個線程衝突。

那麼我該選擇什麼?如果您選擇將PHP作爲CGI二進制文件運行,那麼您將不需要線程安全性,因爲二進制文件在每個請求時都會被調用。對於多線程Web服務器,例如IIS5和IIS6,應該使用PHP的線程版本。

所以這真的取決於您要使用PHP的方式:

  • 的Apache + LoadModule:線程安全
  • 的Apache + FastCGI的:非線程安全
  • IIS:線程安全的
  • IIS + FastCGI的:非線程安全

PHP手冊中有不錯installation instructions。使用FastCGI運行PHP的AFAIR是更好的方式,它執行速度更快,並允許更細粒度的安全配置。

+9

[This](http://windows.php.net/download/)頁面顯示:「如果您使用PHP與IIS,則應使用PHP的非線程安全(NTS)版本。」相比於答案:「IIS:線程安全」 – umutm

+6

是的,它提到了FastCGI。線程安全用於使用ISAPI(php5isapi.dll)時 – Crack

+0

爲什麼要麻煩使用非線程安全選項?這就像:如果我可以選擇購買安全車和非安全車,爲什麼我會選擇不安全的車?它表現更好還是什麼? –

0

除了Crack,從5.4開始,您可以使用內置的Web服務器(它工作的很好!)。

+10

您需要爲您所談論的內容添加某種參考。什麼內置的Web服務器?這與ThreadSafe vs NotThreadSafe有什麼關係? – Despertar

0

快速簡單:如果您使用的是Apache編輯Apache24 \ conf \ httpd.conf文件並搜索「loadmodule」。如果你看到你的加載模塊的引用.dll文件是這樣的:

的LoadModule php7_module 「E:/x64Stack/PHP/php7.1.9/php7apache2_4.dll」
的AddHandler應用程序/ X的httpd - PHP .PHP
的PHPIniDir 「E:/x64Stack/PHP/php7.1.9」

那麼你一定要線程安全啓用TS - 線程安全版本

否則,如果您使用IIS或Apache與CGI那麼NTS風味。

我使用多個堆棧,並在這些多個服務器和PHP版本中,所以不要讓路徑/ PHP或服務器版本拋出你。