PHP线程安全吗?

  • PHP(从5.2开始)在Linux / UNIX上是线程安全的吗?
  • 是否有可能与Apache Worker-MPM或Event-MPM一起使用?

我到目前为止收集的事实是不确定的:

  • 包含在大多数发行版中的默认二进制文件都禁用了ZTS,所以我知道,我必须重新编译它们。
  • 理论上讲,启用了ZTS的Zend Engine(核心PHP)是线程安全的。
  • 据说有些模块可能不是线程安全的,但是我还没有find任何模块的列表。
  • PHP常见问题解答状态几乎与上面相同。

你有什么经验?

这不仅是关于分段错误 (Windows命名中的“访问违规”)。 线程安全还有很多。

我知道gettext和set_locale不是线程安全的。 PHP不应该与线程化的MPM一起使用。

PHP不是线程安全的 。
运行PHP不是线程的 。

请参阅我在哪里可以获得编译某些可选PHP扩展所需的库? 对于线程安全和非线程安全扩展的列表(*标记不是线程安全的和其他的)。

更好的问题可能是“如果使用MPM,以下PHP代码是否会触发访问违规? 或者,“您是否遇到过使用以下function可能归因于并发问题的奇怪行为?

否则,这是俄罗斯轮盘赌。 如果你正在使用一些打包的应用程序,它现在可能工作得很好,但是从新版本的应用程序出来之后的一个月内就会中断。

我强烈build议不要一般使用PHP的MPM。 然而,如果你有一些小代码可以运行,你可以发布它,我们可以告诉你,如果你打算陷入一个陷阱。