PHP的main.c如何开始执行

时间:2009-12-01 22:50:50

标签: php c++ c

我在浏览PHP 5.3.1源代码树时,决定查看main.c。我很好奇PHP运行时幕后发生了什么。

我的印象是任何C或C ++程序都在名为main的函数中开始执行,但我在main.c中看不到具有该名称的函数。

PHP代码实际上从哪里开始执行(命令行与MOD_PHP与CGI的不同?),以及我缺少w / r / t main.c文件中的主要功能可以让我回答这个问题我自己下次?

3 个答案:

答案 0 :(得分:3)

main()函数不必位于名为main.c的文件中。对于php命令行界面main()位于php_cli.c(第642行)。

答案 1 :(得分:2)

我认为我从来没有在互联网上看到任何关于这类问题的明确答案,但您可能会对本书Extending and Embedding PHP的某些段落感兴趣,这可能是它的参考书。来写PHP扩展,以及PHP引擎的内部。

引用第1章“PHP生命周期”的一对有趣的句子是:

  

在常见的网络服务器环境中,   你永远不会明确启动PHP   口译员;你会启动Apache或   一些其他将加载的Web服务器   根据需要使用PHP和流程脚本......

而且,就在之后:

  

... CLI二进制文件实际上表现不错   同样的方式。一个php命令,   在系统提示符处输入,启动   起作用的“命令行API”   作为一个迷你网络服务器设计   服务一个请求。

如果您想尝试阅读更多内容,您可能会在Google books上找到一些网页...

答案 2 :(得分:2)

“main”通常是C / C ++中的入口点,标准对此特别对待它,但它不是唯一的可能性(它是标准所要求的唯一可能性)。它的实际处理方式是特定于实现的,因为运行时库需要在应用程序获得控制权之前进行设置。查看最终答案的链接器设置。

php_module_startup看起来可能是你想要的,它可能是最终从真正的切入点调用的。