2010-08-17 127 views
6

我不知道哪個安裝用於我的PHP?我將使用Apache。我讀過線程安全更快與Apache和非線程安全的IIS?是真的(很高興知道我是否打算以後使用iis)?使用線程安全或非線程安全的PHP?

+2

IIS是一個巨大的安全和性能問題,不應該用於Apache。 – 2010-08-17 08:27:47

+0

@delan,你爲什麼這麼說? – 2010-08-18 03:19:38

+0

選中此項:http://stackoverflow.com/questions/1623914/what-is-thread-safe-or-non-thread-safe-in-php – biphobe 2011-12-03 19:42:55

回答

11

如果使用創建線程來處理請求(而不是進程)的mod_php和MPM,則應該採用線程安全的方式,否則當多個PHP腳本在不同的時間同時運行時,您可能會遇到一堆不希望的副作用線程在相同的進程空間。在Windows上,Apache2默認使用mpm_winnt MPM,它創建線程來處理傳入的請求。所以,如果你使用它,請使用線程安全二進制。但請注意,即使PHP本身是線程安全的,您使用的庫/擴展可能也不是。因此,即使使用線程安全的PHP二進制文件,您仍然可能會遇到mod_php和線程化MPM的問題。欲瞭解更多信息,請在此FAQ條目:http://fi.php.net/manual/en/faq.installation.php#faq.installation.apache2

但是,如果你不使用mod_php的(例如,你正在使用FCGI),或者你使用mod_php的,但使用的是MPM的滋生過程,而不是線程來處理請求(例如prefork MPM),那麼你應該使用非線程安全二進制,因爲它比線程安全版本更有效率,並且因爲PHP腳本在你自己的進程空間中運行,線程安全二進制文件的額外開銷是沒有理由的。