PHP SAPI接口

来源:互联网 发布:网络营销软件三尾狐 编辑:程序博客网 时间:2024/06/05 10:11

一般情况下,FastCGI的整个工作流程是这样的:

  1. Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
  2. FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
  3. 当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
  4. FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时, 请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

PHP的CGI实现了Fastcgi协议,是一个TCP或UDP协议的服务器接受来自Web服务器的请求, 当启动时创建TCP/UDP协议的服务器的socket监听,并接收相关请求进行处理。随后就进入了PHP的生命周期: 模块初始化,sapi初始化,处理PHP请求,模块关闭,sapi关闭等就构成了整个CGI的生命周期。

static sapi_module_struct cgi_sapi_module = {"cgi-fcgi",/* name */"CGI/FastCGI",/* pretty name */php_cgi_startup,/* startup */php_module_shutdown_wrapper,/* shutdown */sapi_cgi_activate,/* activate */sapi_cgi_deactivate,/* deactivate */sapi_cgi_ub_write,/* unbuffered write */sapi_cgi_flush,/* flush */NULL,/* get uid */sapi_cgi_getenv,/* getenv */php_error,/* error handler */NULL,/* header handler */sapi_cgi_send_headers,/* send headers handler */NULL,/* send header handler */sapi_cgi_read_post,/* read POST data */sapi_cgi_read_cookies,/* read Cookies */sapi_cgi_register_variables,/* register server variables */sapi_cgi_log_message,/* Log message */NULL,/* Get request time */NULL,/* Child terminate */STANDARD_SAPI_MODULE_PROPERTIES};

                                             
0 0
原创粉丝点击