• 冒险村物语
  • 英雄无敌3塔防
  • 驾考家园手游

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

2015-05-27

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();		......}

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)

人气推荐

知识阅读

精彩推荐

  • 游戏
  • 软件
查看更多>>