使用线程安全或非线程安全的php?

Posted

技术标签:

【中文标题】使用线程安全或非线程安全的php?【英文标题】:to use thread safe or non thread safe php? 【发布时间】:2011-03-30 20:38:03 【问题描述】:

我想知道我的 php 使用哪个安装?我将使用 apache。我读到 apache 的线程安全更快,而 IIS 的非线程安全?是真的(很高兴知道我以后是否打算使用 iis)?

【问题讨论】:

IIS 是一个巨大的安全和性能问题,不应该在 Apache 上使用。 @delan,你为什么要这么说? 检查这个:***.com/questions/1623914/… 【参考方案1】:

如果你使用 mod_php 和 MPM 创建线程来处理请求(而不是进程),你应该使用线程安全,否则当多个 PHP 脚本同时运行时你可能会得到一堆不希望的副作用同一进程空间中的不同线程。默认情况下,Apache2 在 Windows 上使用 mpm_winnt MPM,它创建线程来处理传入请求。因此,如果您使用它,请使用线程安全二进制文件。但请注意,即使 PHP 本身是线程安全的,您使用的库/扩展也可能不是。因此,即使使用线程安全的 PHP 二进制文件,您可能仍然会遇到 mod_php 和线程 MPM 的问题。有关更多信息,请查看此常见问题解答条目:http://fi.php.net/manual/en/faq.installation.php#faq.installation.apache2

但是,如果您没有使用 mod_php(例如,您使用的是 FCGI),或者您使用的是 mod_php,但使用的是生成进程而不是线程来处理请求的 MPM(例如,prefork MPM),那么你应该使用非线程安全的二进制文件,因为它比线程安全版本更有效,而且当你以这种方式设置网络服务器时,由于 PHP 脚本在它们自己的进程空间中运行,因此没有理由产生额外的开销线程安全的二进制文件。

【讨论】:

以上是关于使用线程安全或非线程安全的php?的主要内容,如果未能解决你的问题,请参考以下文章

查找安装的 PHP 是线程安全的还是非线程安全的?

适用于 Windows 的 PHP 线程安全和非线程安全

(转)PHP线程安全与非线程安全的区别:如何选择用哪一个?

Go Map 为啥是非线程安全的?

windows php线程安全和不安全,两个版本我也看不懂,记下来再说。

markdown [PHP:非线程安全vs线程安全] #php #nts #ts