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
原创粉丝点击