PHP如何与Apache交互?

Wal*_*jad 20 php apache interface

我几乎已经完成了在Java下编写符合HTTP/1.0标准的Web服务器(没有商业用途,这只是为了好玩),基本上我想要包含PHP支持.我意识到这根本不是一件容易的事,但我认为这将是一项不错的成就.

所以我想知道PHP如何与Apache Web服务器(或任何其他Web服务器)完全接口,因此我可以从中学习并编写自己的PHP包装器.它不一定是mod_php,我不介意编写FastCGI包装器 - 据我所知,它也能运行PHP.

我认为所有PHP需要的是输出到客户端(因此它可以解释PHP部分),来自客户端的完整HTTP请求(因此它可以提取POST变量等)和客户端的主机名.然后,您只需获取已解析的PHP代码并将其写入输出流.可能会有更多的东西,但实质上我会认为它的工作原理.

从我到目前为止收集的内容来看,apache2handler提供了一个API,PHP利用它来"连接"到Apache.我想看看apache2handler和php5apache2.dll左右的源代码是一个想法,但在我这样做之前,我想我先问问.

如果有人有更多的信息,经验或某种与此相关的规范,请告诉我.

提前致谢!

sym*_*ean 27

可以通过3种方式从Apache调用PHP:

1)作为一个模块 - 这涉及将php解释器与webserver发布的钩子库链接起来

2)CGI - Web服务器为每个请求启动解释器的实例,并通过stdin,命令行和环境变量将参数传递给解释器,stdout被发送到客户端,stderr应该写入error_log

3)fastCGI - 这消除了为每个请求启动新进程的开销 - 解释器作为守护进程运行

CGI是最简单的实现,但不能扩展/表现良好,该模块将是迄今为止最难的.FastCGI几乎与模块方法一样快.CGI和fastCGI是开放的,记录良好的API.

还有其他方法可以实现您的目标 - 例如Quercus

C.


Del*_*ani 5

简而言之,这就是它的工作原理:

Apache通常通过获取文件并沿HTTP连接发送流来提供文件.但是,使用PHP,Apache会获取文件,将其传输到PHP二进制文件中,然后通过HTTP连接从命令发送输出流.