PHP';s main.c启动执行
我浏览了PHP5.3.1源代码树,决定看一看。每当PHP运行时,我都很好奇幕后发生了什么PHP';s main.c启动执行,php,c++,c,Php,C++,C,我浏览了PHP5.3.1源代码树,决定看一看。每当PHP运行时,我都很好奇幕后发生了什么 我感觉到任何C或C++程序都在main函数中开始执行,但在main .c/p>中没有看到一个具有该名称的函数。 PHP代码实际上是从哪里开始执行的(命令行与MOD_PHP与CGI的不同之处?),我缺少了什么呢?main.c文件中没有可以让我下次自己回答这个问题的主函数?我想我从来没有在互联网上看到过这种问题的明确答案,但您可能会对本书的某些段落感兴趣,这可能是编写PHP扩展和PHP引擎内部的参考书 引用第1
我感觉到任何C或C++程序都在main函数中开始执行,但在main .c/p>中没有看到一个具有该名称的函数。
PHP代码实际上是从哪里开始执行的(命令行与MOD_PHP与CGI的不同之处?),我缺少了什么呢?main.c文件中没有可以让我下次自己回答这个问题的主函数?我想我从来没有在互联网上看到过这种问题的明确答案,但您可能会对本书的某些段落感兴趣,这可能是编写PHP扩展和PHP引擎内部的参考书 引用第1章“PHP生命周期”中的一对有趣的句子是: 在通用Web服务器环境中, 您永远不会显式地启动PHP 口译译员您将启动Apache或 将加载的其他web服务器 PHP和进程脚本(根据需要) 然后,紧接着: 。。。CLI二进制文件实际上起作用 同样的方式。一个php命令, 在系统提示下输入,开始 打开“命令行API”,它起作用 作为一个小型web服务器,设计用于 为单个请求提供服务
如果您想多读一点,您可能会在上找到一些页面…在C/C++中,“main”作为入口点是很常见的,标准对此进行了特殊处理,但这不是唯一的可能性(但它是标准要求的唯一一个)。它的实际处理方式是特定于实现的,因为运行库需要在应用程序获得控制之前进行设置。查看链接器设置以获得最终答案
php\u module\u启动
看起来它可能是您想要的,它可能是最终从真正的入口点调用的。函数不必位于名为main.c的文件中。php命令行界面main()
位于(第642行)。或者在Safari中找到这本书,然后阅读:)谢谢!非常有趣的阅读。@Alan:我确实有这本书,并且已经读过了——这就是为什么我指向它^^^(不过,我从来没有检查过safari的东西;有一天应该试试看……),这可能只有在通过命令行调用PHP时才会发生。例如,当通过mod_PHP调用PHP时,如果入口点不同,我不会感到惊讶。当然,mod_PHP将作为共享对象/DLL/由web服务器加载。。。然后Web服务器将调用它想在该模块中调用的任何函数。但是php本身并不是作为程序运行的,而是作为Web服务器的一部分运行的。