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.
简而言之,这就是它的工作原理:
Apache通常通过获取文件并沿HTTP连接发送流来提供文件.但是,使用PHP,Apache会获取文件,将其传输到PHP二进制文件中,然后通过HTTP连接从命令发送输出流.