PHP各种运行方式的不完整总结
内容提要
PHP 的运行方式主要有线程安全(TS)和非线程安全(NTS),适用于不同环境。常见的 SAPI 包括 CLI、CGI、Apache 模块和 FPM。流行的部署方式是 Nginx + FPM 和 Apache + Apache 模块,其中性能最佳的组合是 Nginx + FPM。
关键要点
-
PHP 的运行方式主要有线程安全(TS)和非线程安全(NTS)。
-
TS 采用加锁机制,保证数据一致性,但执行时间较长。
-
NTS 不提供数据访问保护,执行时间较短,但可能导致数据错乱。
-
在 Windows 环境下通常会区分 TS 和 NTS,而 Linux 环境下通常只有 NTS。
-
PHP 常用的 SAPI 包括 CLI、CGI、Apache 模块和 FPM。
-
流行的部署方式是 Nginx + FPM 和 Apache + Apache 模块。
-
PHP 的内置服务器是单进程单线程,效率不高。
-
CGI 模式性能较差,现已很少使用。
-
FastCGI 模式通过 php-cgi 对接 HTTP 服务器,性能较好。
-
Apache 模块的运行方式流行,但需根据 MPM 选择 PHP 版本。
-
常用的 MPM 模式包括 prefork、worker、event 和 winnt。
-
PHP 官方不建议使用线程化 MPM 的 Apache 来运行 PHP。
-
性能最佳的组合是 Nginx + FPM,支持 HTTP/2 的 Apache 需使用特定配置。
延伸问答
PHP的线程安全和非线程安全有什么区别?
线程安全(TS)采用加锁机制,保证数据一致性,但执行时间较长;非线程安全(NTS)不提供数据保护,执行时间较短,但可能导致数据错乱。
在Linux环境下,PHP通常使用哪种运行方式?
在Linux环境下,通常只有非线程安全(NTS)版本的PHP。
PHP常用的SAPI有哪些?
常用的SAPI包括CLI、CGI、Apache模块和FPM。
什么是性能最佳的PHP部署方式?
性能最佳的组合是Nginx + FPM。
Apache模块的运行方式需要注意什么?
需要根据Apache的多进程模块(MPM)选择PHP的版本。
为什么PHP的内置服务器效率不高?
因为PHP的内置服务器是单进程单线程的,运行效率较低。