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

到目前为止,我收集的事实尚无定论:

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

你有什么经验?

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

4

3 回答 3

26

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

PHP 还不是线程安全的
运行 PHP 没有线程

于 2009-03-25T12:10:12.427 回答
6

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

于 2012-07-14T10:08:10.670 回答
5

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

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

我强烈建议不要将 MPM 与 PHP 一起使用。但是,如果您有一些小代码要运行,您可以发布它,我们可以告诉您是否会遇到陷阱。

于 2009-03-25T12:19:42.437 回答