<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            php語言

            php內核分析之全局變量

            時間:2024-12-14 13:13:51 php語言 我要投稿
            • 相關推薦

            php內核分析之全局變量

              同學們,一定要努力學習哦,因為知識是不會辜負你的。以下是百分網小編精心為大家整理的php內核分析之全局變量,希望對大家學習PHP的同學有所幫助!更多內容請關注應屆畢業生網!

              這里閱讀的php版本為PHP-7.1.0 RC3,閱讀代碼的平臺為linux

              CG

              CG是從全局的compiler_global中獲取屬性值,里面存儲的.就是編譯過程使用到的全局變量。

              struct _zend_compiler_globals {

              zend_stack loop_var_stack;

              zend_class_entry *active_class_entry;

              zend_string *compiled_filename;

              int zend_lineno;

              zend_op_array *active_op_array;

              HashTable *function_table; /* function symbol table */

              HashTable *class_table; /* class table */

              HashTable filenames_table;

              HashTable *auto_globals;

              zend_bool parse_error;

              zend_bool in_compilation;

              zend_bool short_tags;

              zend_bool unclean_shutdown;

              zend_bool ini_parser_unbuffered_errors;

              zend_llist open_files;

              struct _zend_ini_parser_param *ini_parser_param;

              uint32_t start_lineno; // 執行文件開始執行的行號

              zend_bool increment_lineno;

              zend_string *doc_comment;

              uint32_t extra_fn_flags;

              uint32_t compiler_options; /* set of ZEND_COMPILE_* constants */

              HashTable const_filenames;

              zend_oparray_context context;

              zend_file_context file_context;

              zend_arena *arena;

              zend_string *empty_string;

              zend_string *one_char_string[256];

              zend_string **known_strings;

              uint32_t known_strings_count;

              HashTable interned_strings;

              const zend_encoding **script_encoding_list;

              size_t script_encoding_list_size;

              zend_bool multibyte;

              zend_bool detect_unicode;

              zend_bool encoding_declared;

              zend_ast *ast;

              zend_arena *ast_arena;

              zend_stack delayed_oplines_stack;

              #ifdef ZTS

              zval **static_members_table;

              int last_static_member;

              #endif

              };

              SG

              SG是從全局的sapi_global中獲取屬性值

              // TODO:更新

              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;

              EG

              EG是從executor_globals中獲取變量

              // TODO: 更新

              struct _zend_executor_globals {

              zval uninitialized_zval;

              zval error_zval;

              /* symbol table cache */

              zend_array *symtable_cache[SYMTABLE_CACHE_SIZE];

              zend_array **symtable_cache_limit;

              zend_array **symtable_cache_ptr;

              zend_array symbol_table; /* main symbol table */

              HashTable included_files; /* files already included */

              JMP_BUF *bailout;

              int error_reporting;

              int exit_status;

              HashTable *function_table; /* function symbol table */

              HashTable *class_table; /* class table */

              HashTable *zend_constants; /* constants table */

              zval *vm_stack_top;

              zval *vm_stack_end;

              zend_vm_stack vm_stack;

              struct _zend_execute_data *current_execute_data;

              zend_class_entry *fake_scope; /* used to avoid checks accessing properties */

              zend_long precision;

              int ticks_count;

              HashTable *in_autoload;

              zend_function *autoload_func;

              zend_bool full_tables_cleanup;

              /* for extended information support */

              zend_bool no_extensions;

              zend_bool vm_interrupt;

              zend_bool timed_out;

              zend_long hard_timeout;

              #ifdef ZEND_WIN32

              OSVERSIONINFOEX windows_version_info;

              #endif

              HashTable regular_list;

              HashTable persistent_list;

              int user_error_handler_error_reporting;

              zval user_error_handler;

              zval user_exception_handler;

              zend_stack user_error_handlers_error_reporting;

              zend_stack user_error_handlers;

              zend_stack user_exception_handlers;

              zend_error_handling_t error_handling;

              zend_class_entry *exception_class;

              /* timeout support */

              zend_long timeout_seconds;

              int lambda_count;

              HashTable *ini_directives;

              HashTable *modified_ini_directives;

              zend_ini_entry *error_reporting_ini_entry;

              zend_objects_store objects_store;

              zend_object *exception, *prev_exception;

              const zend_op *opline_before_exception;

              zend_op exception_op[3];

              struct _zend_module_entry *current_module;

              zend_bool active;

              zend_bool valid_symbol_table;

              zend_long assertions;

              uint32_t ht_iterators_count; /* number of allocatd slots */

              uint32_t ht_iterators_used; /* number of used slots */

              HashTableIterator *ht_iterators;

              HashTableIterator ht_iterators_slots[16];

              void *saved_fpu_cw_ptr;

              #if XPFPA_HAVE_CW

              XPFPA_CW_DATATYPE saved_fpu_cw;

              #endif

              zend_function trampoline;

              zend_op call_trampoline_op;

              void *reserved[ZEND_MAX_RESERVED_RESOURCES];

              };

            【php內核分析之全局變量】相關文章:

            php內核分析之zval09-07

            php內核分析之擴展10-03

            php內核分析之opcode08-04

            php內核分析之zend-compile09-01

            php內核分析之do-cli05-30

            php內核分析之sapi-module-struct10-17

            php內核分析之ZTS和zend-try07-18

            PHP中超全局變量$GLOBALS和global的區別09-05

            php學習之php配置07-15

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看