最后,PHP 5.4线程安全吗?

时间:2012-03-11 02:50:22

标签: php thread-safety

PHP社区最近宣布发布5.4。所以,这是我的第一个问题:这个版本最终是线程安全吗?

我已经在网上阅读了很多关于这个热门话题(PHP踏板安全)的帖子,我必须承认我有点困惑。

截至今天,我对这个主题的理解不足,就是在没有线程安全的PHP的情况下,可以在多线程服务器上使用PHP的“线程安全”版本,例如Apache2-mpm-Worker(或Windows上的IIS)应该在多进程服务器上使用版本,例如Apache2-mpm-Prefork,同时我也理解PHP本身不能启动多个线程。

我目前在带有WampServer2.2d-64的Windows 7-64系统上使用PHP 5.3.10,其中phpinfo()表示:线程安全:已启用和Apache 2.2.21已加载模块:mod_php5以及另一个Ubuntu 10.04.3带有PHP 5.3.2-1ubuntu4.14的LTS(64位)系统,其中phpinfo()表示Tread Safety:disabled和Apache 2.2.14加载的模块mod_php5。我以为使用mod_php5会自动加载PHP的线程安全版本(但我想我错了)。

所以,这是我的第二个问题:PHP(任何版本)是真的线程安全是或否?

所以我的第三个问题是:如何在我的Ubuntu系统上启用线程安全选项?

我关于这个主题的最后一个问题是:线程安全和非线程安全的PHP / Apache版本之间的执行时间是否存在差异?

PS:另外一个问题:如何在Ubuntu上安装PHP 5.3.10,因为Synaptic不提议使用此软件包?

1 个答案:

答案 0 :(得分:1)

  

任何版本/ 5.4最终都是线程安全的吗?

警告是的。请参阅obtaining PHP FAQWindows download page。并非所有扩展都是线程安全的,并且存在错误。大多数Linux发行版都提供非线程版本,包括Ubuntu版本。

  

如何在我的Ubuntu系统上启用线程安全选项。

您可以从ubuntu存储库中获取包apache2-mpm-workerapache2-threaded-dev。您需要从源(因此开发工具包)配置和构建线程版本。同样,一些基本扩展不是线程安全的,不能使用。

  

线程安全和非线程安全的PHP / Apache版本之间的执行时间是否存在差异?

是的,但如果您对性能感兴趣,那么您应该查看lighttpd或其他替代方案。

  

如何在Ubuntu上安装PHP 5.3.10

10.04-3 LTS支持5.3.2。 Precise Pangolin将支持PHP 5.3.10,但这仍在开发中。您可以尝试在当前版本上构建此源集,但风险自负。