PHP内核探索:通过mod_php5支持PHP
PHP内核    2019-04-25 14:29:40    12    0    0
admin   PHP内核
static sapi_module_struct apache2_sapi_module = {
"apache2handler",
"Apache 2.0 Handler",
 
php_apache2_startup,                /* startup */
php_module_shutdown_wrapper,            /* shutdown */
 
NULL,                       /* activate */
NULL,                       /* deactivate */
 
php_apache_sapi_ub_write,           /* unbuffered write */
php_apache_sapi_flush,              /* flush */
php_apache_sapi_get_stat,           /* get uid */
php_apache_sapi_getenv,             /* getenv */
 
php_error,                  /* error handler */
 
php_apache_sapi_header_handler,         /* header handler */
php_apache_sapi_send_headers,           /* send headers handler */
NULL,                       /* send header handler */
 
php_apache_sapi_read_post,          /* read POST data */
php_apache_sapi_read_cookies,           /* read Cookies */
 
php_apache_sapi_register_variables,
php_apache_sapi_log_message,            /* Log message */
php_apache_sapi_get_request_time,       /* Request Time */
NULL,                       /* Child Terminate */
 
STANDARD_SAPI_MODULE_PROPERTIES
};​
 

这些方法都专属于Apache服务器。以读取cookie为例,当我们在Apache服务器环境下,在PHP中调用读取Cookie时, 最终获取的数据的位置是在激活SAPI时。它所调用的方法是read_cookies。

 
SG(request_info).cookie_data = sapi_module.read_cookies(TSRMLS_C);

对于每一个服务器在加载时,我们都指定了sapi_module,而Apache的sapi_module是apache2_sapi_module。 其中对应read_cookies方法的是php_apache_sapi_read_cookies函数。 这也是定义SAPI结构的理由:统一接口,面向接口的编程,具有更好的扩展性和适应性。

上一篇: PHP内核探索:嵌入式PHP

下一篇: PHP内核探索:Apache运行与钩子函数

12
登录 后评论.
没有帐号? 现在注册.
0 评论
Table of content