php global variable - yaokun123/php-wiki GitHub Wiki

一些全局变量

一、全局变量php_core_globals(core_globals)(PG宏)

typedef struct _php_core_globals php_core_globals;

# define PG(v) (core_globals.v)
extern ZEND_API struct _php_core_globals core_globals;


struct _php_core_globals {
    ......

    // 6个http相关的全局变量($_POST $_GET $_COOKIE $_SERVER $_ENV $_FILES)
    zval http_globals[6];

    ......
}

/* Track vars */
#define TRACK_VARS_POST		0    // $_POST
#define TRACK_VARS_GET		1    // $_GET
#define TRACK_VARS_COOKIE	2    // $_COOKIE 
#define TRACK_VARS_SERVER	3    // $_SERVER 
#define TRACK_VARS_ENV		4    // $_ENV 
#define TRACK_VARS_FILES	5    // $_FILES

二、全局变量sapi_globals_struct(sapi_globals)(SG宏)

# define SG(v) (sapi_globals.v)
extern SAPI_API sapi_globals_struct sapi_globals;

typedef struct _sapi_globals_struct {
	void *server_context;
	sapi_request_info request_info;
	sapi_headers_struct sapi_headers;
	int64_t read_post_bytes;
	unsigned char post_read;
	unsigned char headers_sent;
	zend_stat_t global_stat;
	char *default_mimetype;
	char *default_charset;
	HashTable *rfc1867_uploaded_files;
	zend_long post_max_size;
	int options;
	zend_bool sapi_started;
	double global_request_time;
	HashTable known_post_content_types;
	zval callback_func;
	zend_fcall_info_cache fci_cache;
} sapi_globals_struct;

三、全局变量fpm_globals

extern struct fpm_globals_s fpm_globals;

struct fpm_globals_s {
	pid_t parent_pid;
	int argc;
	char **argv;
	char *config;
	char *prefix;
	char *pid;
	int running_children;
	int error_log_fd;
	int log_level;
	int listening_socket; /* for this child */
	int max_requests; /* for this child */
	int is_child;
	int test_successful;
	int heartbeat;
	int run_as_root;
	int force_stderr;
	int send_config_pipe[2];
};