搜尋
首頁php教程php手册PHP内核两大流程之启动PHP的核心代码段

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

Step 1: Start the sapi

extern 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 php

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

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何在 Windows 11、10 中启用或禁用核心隔离内存完整性如何在 Windows 11、10 中启用或禁用核心隔离内存完整性Apr 27, 2023 pm 10:43 PM

如今,大多数Windows用户都使用虚拟机。当他们系统上的核心隔离被禁用时,安全风险和攻击是可以预料的。即使设置了核心隔离,如果用户升级了系统,也会禁用内存完整性。如果启用核心隔离,系统将免受攻击。对于经常使用虚拟计算机的人,强烈建议他们启用它。如果您正在寻求有关如何在任何Windows11系统上启用或禁用核心隔离内存完整性的说明,此页面可以提供帮助。如何使用Windows安全应用在Windows11中启用或禁用核心隔离内存完整性第1步:按Windows键并键入Windows安全

如何在Ubuntu 22.04上安装Linux 内核 详细教程!如何在Ubuntu 22.04上安装Linux 内核 详细教程!Mar 01, 2024 pm 10:34 PM

在Ubuntu22.04上安装Linux内核可以按照以下步骤进行操作:更新系统:首先,确保你的Ubuntu系统是最新的,执行以下命令更新系统软件包:sudoaptupdatesudoaptupgrade下载内核文件:访问Linux内核官方网站()下载所需的内核版本。选择一个稳定版本并下载源代码文件(以.tar.gz或.tar.xz为扩展名),例如:wget解压文件:使用以下命令解压下载的内核源代码文件:tar-xflinux-5.14.tar.xz安装构建依赖:安装构建内核所需的工具和依赖项。执

Linux修改内核(kernel)启动顺序Linux修改内核(kernel)启动顺序Feb 23, 2024 pm 10:22 PM

Linux修改内核(kernel)启动顺序一、RHEL6/CentOS6修改内核启动顺序查看/etc/grub.conf文件以确定系统内核情况。根据文件显示,系统存在两个内核版本,分别为2.6.32-573.18.1.el6.x86_64和2.6.32-431.23.3.el6.x86_64。内核版本从上至下列出。在grub.conf文件中,可以通过调整default参数来决定系统启动时使用哪个内核版本。默认值为0,表示系统将启动最新的内核版本。值为0对应着grub.conf文件中列出的第一个内

从头开始构建,DeepMind新论文用伪代码详解Transformer从头开始构建,DeepMind新论文用伪代码详解TransformerApr 09, 2023 pm 08:31 PM

2017 年 Transformer 横空出世,由谷歌在论文《Attention is all you need》中引入。这篇论文抛弃了以往深度学习任务里面使用到的 CNN 和 RNN。这一开创性的研究颠覆了以往序列建模和 RNN 划等号的思路,如今被广泛用于 NLP。大热的 GPT、BERT 等都是基于 Transformer 构建的。Transformer 自推出以来,研究者已经提出了许多变体。但大家对 Transformer 的描述似乎都是以口头形式、图形解释等方式介绍该架构。关于 Tra

苹果M3 Ultra推出全新版本,新增32个CPU核心和80个GPU核心苹果M3 Ultra推出全新版本,新增32个CPU核心和80个GPU核心Nov 13, 2023 pm 11:13 PM

这款芯片可能会搭载高达80个GPU核心,进而成为M3系列中性能最强大的产品。Max两倍核心数量从M1与M2系列的发展模式来看,苹果的「Ultra」版芯片基本上是「Max」版本的两倍核心数量,这是因为苹果实际上将两颗Max芯片透过内部连接技术结合起来,形成了M1Ultra与M2Ultra。80个GPU核心M3Ultra可能拥有「高达80个图形处理核心」。这一预测基于苹果芯片的发展路径:从基础版到「Pro」版,再到图形核心数量翻倍的「Max」版,以及CPU和GPU核心都翻倍的「Ultra」版。举例来

集成GPT-4的Cursor让编写代码和聊天一样简单,用自然语言编写代码的新时代已来集成GPT-4的Cursor让编写代码和聊天一样简单,用自然语言编写代码的新时代已来Apr 04, 2023 pm 12:15 PM

集成GPT-4的Github Copilot X还在小范围内测中,而集成GPT-4的Cursor已公开发行。Cursor是一个集成GPT-4的IDE,可以用自然语言编写代码,让编写代码和聊天一样简单。 GPT-4和GPT-3.5在处理和编写代码的能力上差别还是很大的。官网的一份测试报告。前两个是GPT-4,一个采用文本输入,一个采用图像输入;第三个是GPT3.5,可以看出GPT-4的代码能力相较于GPT-3.5有较大能力的提升。集成GPT-4的Github Copilot X还在小范围内测中,而

安卓系统究竟是不是基于Linux内核?安卓系统究竟是不是基于Linux内核?Mar 14, 2024 pm 03:12 PM

安卓系统究竟是不是基于Linux内核?安卓系统作为目前全球使用最广泛的移动操作系统之一,一直以来都被称为基于Linux内核开发的。然而,真正的情况究竟如何呢?我们来探讨一下这个问题。首先,让我们了解一下Linux内核。Linux内核作为一个开源的操作系统内核,是由LinusTorvalds于1991年首次发布的。它为许多操作系统提供了良好的基础,包括And

Linux内核主函数解析与分析Linux内核主函数解析与分析Mar 14, 2024 am 11:27 AM

Linux内核主函数解析与分析Linux内核是一个庞大而复杂的系统,其中的主函数起着至关重要的作用,它是整个系统的入口点,负责初始化各种子系统、驱动程序和内核模块,最终启动整个操作系统。本文将针对Linux内核主函数进行解析与分析,通过具体的代码示例来展示其关键功能和执行流程。在Linux内核中,主函数的入口点位于init/main.c文件中的start_k

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具