1、如何将 PHP 连接到 Web 服务器?
web 服务器可以通过三种方法来利用 PHP 生成 web 页面。
- 第一种方法是将 PHP 自以为 CGI“包装器”用作一个单独运行的语言解释器(CGI Wapper)。当以这种方法运行时,PHP 会为向 web 服务器的每个 PHP 页面请求创建 PHP 解释器的实例,并在每个请求的结束时销毁实例,获取的任何资源(例如指向 SQL 数据库服务器的链接)都会在销毁时关闭。。
- 第二,也是很流行的方法,是把 PHP 用作多进程 web 服务器的一个模块,这种方法目前只适用于 Apache。多进程的服务器通常有一个父进程和一组子进程协调运行,子进程负责提供网页的工作。每当接收达到客户端提出请求时,该请求会传递给尚未给其它客户端提供服务的某个子进程。这也就是说当相同的客户端第二次向服务端发出请求时,它将有可能由与第一次不同的某个子进程提供服务。
- 最后一种方法是将 PHP 用作多线程 web 服务器的插件。目前 PHP 支持 WSAPI 和 NSAPI(在 Windows 上),允许 PHP 作为 Netscape FastTrack(iPlanet)、Microsoft 的 Internet Information Server (IIS) 和 O'Reilly 的 WebSite Pro 等多线程服务器的插件使用。
2、SAPI、CGI、FastCGI、FPM 是什么?
- SAPI是PHP 所使用的接口类型(the Server API)。php中可以使用用函数 php_sapi_name 查询接口类型值,返回的值包括了 apache、apache2handler、cgi(直到 PHP 5.3)、cgi-fcgi、cli、cli-server、embed、fpm-fcgi、litespeed、phpdbg等。
- CGI(公共网关接口)是一种在 Web 服务器上运行脚本的协议,它将用户请求传递给外部程序生成动态内容,并将其发送回 Web 服务器进行响应。每个请求都需要启动一个新进程处理。
- FastCGI 是一种与 CGI 类似的协议,但它使用长连接而不是为每个请求创建新进程,从而提高性能。
- FPM(FastCGI 进程管理器)是 PHP FastCGI 的主要实现,实现了许多对高负载网站有用的功能。FPM 管理多个 PHP 进程,并通过 FastCGI 协议与 Web 服务器通信,提供更好的性能和资源管理。一般用于 nginx 服务器。
3、如何选择 PHP 的非线程安全和线程安全版本?
- 非线程安全(non-thread-safe)版本的 PHP 无法同时运行多个线程,在多线程环境中可能导致数据竞争和内存访问冲突。通常需要使用外部机制来确保线程安全性。
对于非线程安全(non-thread-safe)版本的 PHP,常见的用例是通过CGI或者 FastCGI 协议与 Web 服务器进行交互。这种方式不需要进行线程的安全检查,可以提高执行效率。文章来源:https://www.toymoban.com/news/detail-509058.html
- 线程安全(thread-safe)版本的 PHP 能够正确处理并发访问,适用于多线程环境。它使用锁和其他机制来保护共享资源,避免数据竞争和冲突。
线程安全(thread-safe)版本的 PHP ,常见的用例是与多线程的 SAPI 进行交互,并将 PHP 作为模块加载到 Web 服务器中。例如,当使用Apache并使用 apache2handler 链接PHP时,建议使用线程安全(TS)版本的 PHP。文章来源地址https://www.toymoban.com/news/detail-509058.html
到了这里,关于php连接到 Web 服务器方式和php版本选择的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!