如何将 http 请求发送到编译器


How to send http request to compiler

我正在用Csharp开发一个Web服务器,我想在上面安装php编译器。

当前状态:Web服务器正在工作并接收连接,可以编译PHP页面,我正在使用procces start调用PHP编译器,我可以像这样发送GET参数作为arg:

php.exe name=1 /index.php 

问题是如何以这种更好的方式向编译器发送 post、获取数据和 HTTP 标头?

确实有一个相当黑客的解决方案可以在命令行界面上传递HTTP标头:-B--process-begin标志允许在相关脚本之前运行代码。这可用于将数据注入$_SERVER超全局数组,以模拟正在设置的标头。例如,要设置X-Foo: bar,您将运行以下命令:

php.exe --process-begin '$_SERVER["HTTP_X_FOO"] = bar;' /index.php

$_GET$_POST超全局变量也可以这样做。但是,这实际上只是一个黑客,出于安全原因,我不能在学术环境之外推荐它。

一个稍微好一点的方法是利用内置的网络服务器。如果你的编码足够干净,将传入的请求重新路由到 PHP 并将结果引导回应该没有问题。但是,只有当您不需要任何虚拟主机时,这才能完美运行。与上面的解决方案一样,这在研究之外没有立足之地!

绝对正确的方法是实现通用网关接口。PHP本身带有CGI界面,因此对它进行CGI是微不足道的。如果您遇到可扩展性问题,您可能需要切换到 FastCGI。可在此处找到示例实现。

最后一件事:PHP是一种解释型语言,而不是编译型语言。