我尝试编译 php 5.6、php 7.1 和 php 7.3令我惊讶的是,它们都是用 ZTS 编译的。我使用了我一直使用的相同选项,但这次有所不同。我怀疑是 Apache,但也是用我常用的选项编译的。任何想法?阿帕奇./configure --prefix=/usr/local/httpd-2.4.41 --enable-modules=all --enable-mods-shared=all --enable-mpms-shared=allphp./configure --prefix=/usr/local/php-7.1.33-2.4 --with-apxs2=/usr/local/httpd-2.4.41/bin/apxs \--with-mysqli=shared --with-pdo-mysql=shared \--with-sqlite3=shared --with-pdo-sqlite=shared \--with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr \--with-openssl=shared \--enable-pcntl=shared --enable-sockets=shared \--enable-ftp=shared \--with-curl=shared \--with-mhash=shared \--enable-wddx=shared \--enable-mbstring=shared \--enable-intl=shared \--enable-exif=shared \--with-gmp=shared \--enable-calendar=shared \--enable-soap=shared \--with-zlib=shared --enable-zip=shared \--enable-bcmath=shared
1 回答
达令说
TA贡献1821条经验 获得超6个赞
结果是这样的:
Apache 服务器可能与多个 MPM 模块一起工作。可能 99% 的 PHP 安装使用MPM prefork
:
https://httpd.apache.org/docs/2.4/mod/prefork.html
在这种模式下,apache 产生几个子进程fork()
,PHP 不需要是线程安全的。
在 Linux 下这种模式非常快,因为 Linux 有非常快fork()
的 . 它与基于线程的程序一样快。
但是,安装 Apache 时,配置文件使用MPM Worker
.
https://httpd.apache.org/docs/2.4/mod/worker.html
代替fork()
,此模式使用线程。对于这种模式,PHP 必须是线程安全的。
在 Linux MPM Worker
+ PHP 上比 慢MPM prefork
,但在 Windows 和 MacOS 等其他系统上,它可能更快。
MPM Worker
在 Apache 配置中默认选择模式。
由于我刚刚制作make install
并且从未更改过 Apache conf 文件选择是MPM Worker
. 这是从 PHP 配置脚本中提取的,结果是线程安全的 PHP。
我确实MPM prefork
在 Apache conf 中进行了选择,并且 PHP 编译符合预期。
- 1 回答
- 0 关注
- 133 浏览
添加回答
举报
0/150
提交
取消