使用 --enable-maintainer-zts 编译 PHP 时的缺点或副作用(使用 php pthread)

Drawbacks or side-effects when compiling PHP with --enable-maintainer-zts (to use php pthread)

我有一个 Web 应用程序,在生产环境中 运行 可以正常使用 PHP 5.5.5。

现在我需要在同一台服务器上 运行 一些 PHP 使用 php pthread (v. 2.0.10)

的脚本

--enable-maintainer-zts重建php是否安全(允许使用pthreads)并使用相同的可执行文件两者 用于 Web 应用程序和使用 php-pthread ?

的 CLI 脚本

或者我应该构建两个 PHP:phpphp-zts 并将前者用于 Web 应用程序,将后者用于 CLI 脚本?

由于 --enable-maintainer-zts 默认情况下未启用,我认为它有一些缺点或更糟(正如我在此处阅读的 https://github.com/travis-ci/travis-ci/issues/985)可能会引入不当行为(错误)。

网络堆栈是nginx + php-fpm + mySql 在 Mac OS X 10.9.5.

我想说清楚:phtread 不会 被 Web 应用程序脚本使用。仅通过 CLI 脚本。

来自http://www.phpinternalsbook.com/build_system/building_php.html

(强调我的)

--enable-debug enables debug mode

[...]

--enable-maintainer-zts enables thread-safety.

[...]

you should not use either of these options if you want to perform performance benchmarks for your code, as both can cause significant and asymmetrical slowdowns.

--enable-maintainer-zts 看似无害,但影响性能。所以在生产环境中绝对不可取

使用 --enable-maintainer-zts 单独构建 PHP 以便在 CLI 脚本中使用 php pthread 是合适的方法。