PHP线程安全吗?

var*_*tec 51 php multithreading thread-safety

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

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

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

你有什么经历?

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

OIS*_*OIS 23

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

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

  • 这篇文章现在接近**10**岁.PHP不是线程安全的吗? (4认同)
  • 是的他们这样做.如果段错误是由于对共享变量的错误线程访问导致的内存访问违规造成的,那么这正是您要避免的问题.它不仅*关于段错误/访问冲突,但如果它确实是段错误,那么不要再费心了,因为它绝对不是线程安全的. (2认同)

小智 6

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


Tim*_*ost 5

一个更好的问题可能是,"如果使用MPM,以下PHP代码是否会触发访问冲突?" 或者,"您是否经历过使用以下功能导致并发问题的奇怪行为?"

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

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

  • 实际上代码可能不是线程安全的,并且永远不会导致任何段错误/访问冲突. (2认同)