12.第二节 SAPI概述
来源:互联网 发布:软件需求管理系统 编辑:程序博客网 时间:2024/06/01 14:21
SAPI概述
struct _sapi_module_struct { char *name; // 名字(标识用) char *pretty_name; // 更好理解的名字(自己翻译的) int (*startup)(struct _sapi_module_struct *sapi_module); // 启动函数 int (*shutdown)(struct _sapi_module_struct *sapi_module); // 关闭方法 int (*activate)(TSRMLS_D); // 激活 int (*deactivate)(TSRMLS_D); // 停用 int (*ub_write)(const char *str, unsigned int str_length TSRMLS_DC); // 不缓存的写操作(unbuffered write) void (*flush)(void *server_context); // flush struct stat *(*get_stat)(TSRMLS_D); // get uid char *(*getenv)(char *name, size_t name_len TSRMLS_DC); // getenv void (*sapi_error)(int type, const char *error_msg, ...); /* error handler */ int (*header_handler)(sapi_header_struct *sapi_header, sapi_header_op_enum op, sapi_headers_struct *sapi_headers TSRMLS_DC); /* header handler */ /* send headers handler */ int (*send_headers)(sapi_headers_struct *sapi_headers TSRMLS_DC); void (*send_header)(sapi_header_struct *sapi_header, void *server_context TSRMLS_DC); /* send header handler */ int (*read_post)(char *buffer, uint count_bytes TSRMLS_DC); /* read POST data */ char *(*read_cookies)(TSRMLS_D); /* read Cookies */ /* register server variables */ void (*register_server_variables)(zval *track_vars_array TSRMLS_DC); void (*log_message)(char *message); /* Log message */ time_t (*get_request_time)(TSRMLS_D); /* Request Time */ void (*terminate_process)(TSRMLS_D); /* Child Terminate */ char *php_ini_path_override; // 覆盖的ini路径 ... ...};
static sapi_module_struct apache_sapi_module = { "apache", /* name */ "Apache", /* pretty name */ php_apache_startup, /* startup */ php_module_shutdown_wrapper, /* shutdown */ php_apache_sapi_activate, /* activate */ NULL, /* deactivate */ sapi_apache_ub_write, /* unbuffered write */ sapi_apache_flush, /* flush */ php_apache_get_stat, /* get uid */ php_apache_getenv, /* getenv */ php_error, /* error handler */ sapi_apache_header_handler, /* header handler */ sapi_apache_send_headers, /* send headers handler */ NULL, /* send header handler */ sapi_apache_read_post, /* read POST data */ sapi_apache_read_cookies, /* read Cookies */ sapi_apache_register_server_variables, /* register server variables */ php_apache_log_message, /* Log message */ php_apache_get_request_time, /* Get request time */ sapi_apache_child_terminate, NULL,
struct _sapi_module_struct { char *name; char *pretty_name; int (*startup)(struct _sapi_module_struct *sapi_module); int (*shutdown)(struct _sapi_module_struct *sapi_module); int (*activate)(TSRMLS_D); int (*deactivate)(TSRMLS_D); int (*ub_write)(const char *str, unsigned int str_length TSRMLS_DC); void (*flush)(void *server_context); struct stat *(*get_stat)(TSRMLS_D); char *(*getenv)(char *name, size_t name_len TSRMLS_DC); void (*sapi_error)(int type, const char *error_msg, ...); int (*header_handler)(sapi_header_struct *sapi_header, sapi_header_op_enum op, sapi_headers_struct *sapi_headers TSRMLS_DC); int (*send_headers)(sapi_headers_struct *sapi_headers TSRMLS_DC); void (*send_header)(sapi_header_struct *sapi_header, void *server_context TSRMLS_DC); int (*read_post)(char *buffer, uint count_bytes TSRMLS_DC); char *(*read_cookies)(TSRMLS_D); void (*register_server_variables)(zval *track_vars_array TSRMLS_DC); void (*log_message)(char *message TSRMLS_DC); double (*get_request_time)(TSRMLS_D); void (*terminate_process)(TSRMLS_D); char *php_ini_path_override; void (*block_interruptions)(void); void (*unblock_interruptions)(void); void (*default_post_reader)(TSRMLS_D); void (*treat_data)(int arg, char *str, zval *destArray TSRMLS_DC); char *executable_location; int php_ini_ignore; int php_ini_ignore_cwd; /* don't look for php.ini in the current directory */ int (*get_fd)(int *fd TSRMLS_DC); int (*force_http_10)(TSRMLS_D); int (*get_target_uid)(uid_t * TSRMLS_DC); int (*get_target_gid)(gid_t * TSRMLS_DC); unsigned int (*input_filter)(int arg, char *var, char **val, unsigned int val_len, unsigned int *new_val_len TSRMLS_DC); void (*ini_defaults)(HashTable *configuration_hash); int phpinfo_as_text; char *ini_entries; const zend_function_entry *additional_functions; unsigned int (*input_filter_init)(TSRMLS_D);};
http://www.php-internals.com/book/?p=chapt02/02-02-00-overview
0 0
- 12.第二节 SAPI概述
- php源码之路第二章第二节(SAPI概述之Apache模块)
- php源码之路第二章第二节(SAPI概述之嵌入式)
- php源码之路第二章第二节(SAPI概述之FastCGI)
- SAPI 5 概述
- [李景山php] 深入理解PHP内核[读书笔记]--第二章:用户代码执行--SAPI概述-1
- [李景山php] 深入理解PHP内核[读书笔记]--第二章:用户代码执行--SAPI概述
- [李景山php] 深入理解PHP内核[读书笔记]--第二章:用户代码执行--SAPI概述-Apache模块-FastCGI
- [李景山php] 深入理解PHP内核[读书笔记]--第二章:用户代码执行--SAPI概述-PHP中的CGI实现
- 第二节 c++概述(上)
- 第二节 c++概述(下)
- 数据结构概述 第二章
- Gradle第二章:概述
- 第二章 操作系统概述
- 第二章 概述
- 第二章 操作系统概述
- 第二章 C++概述
- F#入门-第一章 概述-第二节 关于F#
- GCD
- Python应用系列(1),抓取aso100网站的app排名
- JVM学习(1)--Java内存区域
- nonce和timestamp在Http安全协议中的作用
- 知识库--Power of Concurrency (71)
- 12.第二节 SAPI概述
- /proc/loadavg
- hdu 1087 Super Jumping! Jumping! Jumping!
- 递归法实现折半查找
- 114. Flatten Binary Tree to Linked List
- java查看windows的磁盘空间大小信息
- 每日一记(1)
- HTTP的GET请求和POST请求
- Manual commit is not allowed over a Spring managed