您好,欢迎访问一九零五行业门户网

PHP内核两大流程之启动PHP的核心代码段_PHP教程

php内核两大流程之启动php的核心代码段 step 1: start the sapiextern zend_module_entry php_apache_module;static int php_apache2_startup(sapi_module_struct *sapi_module){ if (php_module_startup(sapi_module, &php_apache_module, 1)==failure) { return failure; } return success;}step 2: start the phpint php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_modules, uint num_additional_modules){ zend_utility_functions zuf; zend_utility_values zuv; ..... sapi_module = *sf; php_output_startup(); zuf.error_function = php_error_cb; zuf.printf_function = php_printf; zuf.write_function = php_output_wrapper; zuf.fopen_function = php_fopen_wrapper_for_zend; zuf.message_handler = php_message_handler_for_zend; zuf.block_interruptions = sapi_module.block_interruptions; zuf.unblock_interruptions = sapi_module.unblock_interruptions; zuf.get_configuration_directive = php_get_configuration_directive_for_zend; zuf.ticks_function = php_run_ticks; zuf.on_timeout = php_on_timeout; zuf.stream_open_function = php_stream_open_for_zend; zuf.vspprintf_function = vspprintf; zuf.getenv_function = sapi_getenv; zuf.resolve_path_function = php_resolve_path_for_zend; zend_startup(&zuf, null tsrmls_cc); ...... gc_globals_ctor(tsrmls_c); ...... /* register php core ini entries */ register_ini_entries(); /* register zend ini entries */ zend_register_standard_ini_entries(tsrmls_c); /* disable realpath cache if an open_basedir is set */ if (pg(open_basedir) && *pg(open_basedir)) { cwdg(realpath_cache_size_limit) = 0; } /* initialize stream wrappers registry * (this uses configuration parameters from php.ini) */ if (php_init_stream_wrappers(module_number tsrmls_cc) == failure) { php_printf(php: unable to initialize stream url wrappers.\n); return failure; } /* startup extensions staticly compiled in */ if (php_register_internal_extensions_func(tsrmls_c) == failure) { php_printf(unable to start builtin modules\n); return failure; } /* start additional php extensions */ php_register_extensions_bc(additional_modules, num_additional_modules tsrmls_cc); /* load and startup extensions compiled as shared objects (aka dlls) as requested by php.ini entries theese are loaded after initialization of internal extensions as extensions *might* rely on things from ext/standard which is always an internal extension and to be initialized ahead of all other internals */ php_ini_register_extensions(tsrmls_c); zend_startup_modules(tsrmls_c); /* start zend extensions */ zend_startup_extensions(); .....}int zend_startup(zend_utility_functions *utility_functions, char **extensions tsrmls_dc) /* {{{ */{ zend_compiler_globals *compiler_globals; zend_executor_globals *executor_globals; ...... zend_compile_file = compile_file; zend_execute_ex = execute_ex; zend_execute_internal = null; zend_init_opcodes_handlers(); ......}
http://www.bkjia.com/phpjc/914779.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/914779.htmltecharticlephp内核两大流程之启动php的核心代码段 step 1: start the sapiextern zend_module_entry php_apache_module;static int php_apache2_startup(sapi_module_struct *sapi_module)...
其它类似信息

推荐信息