2010-08-17 114 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脚本在你自己的进程空间中运行,线程安全二进制文件的额外开销是没有理由的。