<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. 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

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人