C#PHP-CGI-调用phpinfo会使Web服务器崩溃
我创建了一个简单的小型Web服务器,只用于处理GET请求。我还想添加PHP支持并管理它。但有一个问题: 每次我试图在.php文件中调用phpinfo(),我的服务器都会在“WaitForExit”进程中停止C#PHP-CGI-调用phpinfo会使Web服务器崩溃,c#,php,cgi,webserver,C#,Php,Cgi,Webserver,我创建了一个简单的小型Web服务器,只用于处理GET请求。我还想添加PHP支持并管理它。但有一个问题: 每次我试图在.php文件中调用phpinfo(),我的服务器都会在“WaitForExit”进程中停止 我的PHP.ini设置应该很好,我为fastcgi使用调整了一切。有没有办法解决这个问题?问题是标准输出有一定的缓冲区大小。如果此缓冲区已满,则对标准输出的任何write()。现在,如果调用p.WaitForExit(),您将无限期地等待 解决方案是首先读取标准输出中的所有内容,然后调用Wa
我的PHP.ini设置应该很好,我为fastcgi使用调整了一切。有没有办法解决这个问题?问题是
标准输出
有一定的缓冲区大小。如果此缓冲区已满,则对标准输出的任何write()。现在,如果调用p.WaitForExit()
,您将无限期地等待
解决方案是首先读取标准输出
中的所有内容,然后调用WaitForExit
可能是php模块存在缺陷。尝试禁用每个模块并逐个重新启用它们。如果首先执行string sOutput=p.StandardOutput.ReadToEnd()代码>和之后的p.WaitForExit()代码>?哈哈,谢谢vstm!结果很好!我把头撞在上面了,解决办法很简单!谢谢
class FastPHP
{
private string _phpPath = @"C:\\Program Files (x86)\\PHP\\php-cgi.exe";
Process p;
public FastPHP(string filename)
{
p = new Process();
p.StartInfo.FileName = this._phpPath;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.Arguments = "-q \""+filename+"\"";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
}
public string getPHPOutput()
{
p.Start();
p.WaitForExit();
string sOutput = p.StandardOutput.ReadToEnd();
p.Close();
return sOutput;
}
}