3

我有一个 Web 应用程序,并且在生产环境中使用 PHP 5.5.5 运行良好。

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

--enable-maintainer-zts使用(以允许使用 pthread)重建 php 并为 Web 应用程序使用 php-pthread 的 CLI 脚本使用相同的可执行文件是否安全

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

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

Web 堆栈是Mac OS X 10.9.5 上的nginx + php-fpm + mySql 。

我想明确一点: web 应用程序脚本不会使用phtread。只能通过 CLI 脚本。

4

1 回答 1

4

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

(强调我的)

--enable-debug启用调试模式

[...]

--enable-maintainer-zts启用线程安全。

[...]

如果要对代码执行性能基准测试,则不应使用这些选项中的任何一个,因为两者都可能导致显着和不对称的减速

--enable-maintainer-zts似乎无害但影响性能。所以在生产环境中绝对不建议这样做。

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

于 2016-03-14T22:41:51.000 回答