Я работаю над пользовательским веб-сервером в C#. Я звоню php -chi.exe. Мой код для этого выглядит следующим образом:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
string sOutput = "";
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = "php/php-cgi.exe";
proc.StartInfo.Arguments = "-f " + filePath + " " + queryString;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
StreamReader hOutput = proc.StandardOutput;
proc.WaitForExit(2000);
if (proc.HasExited)
return hOutput.ReadToEnd();
return "Web Server attempted to call PHP, however the call has timedout. output = " +hOutput.ReadToEnd();
Это работает абсолютно нормально для меня, когда я передаю ему файл php ниже определенного размера. Но если размер файла php превышает 4 или 5 КБ, процесс php не завершается после его завершения, что приводит к зависанию кода до истечения времени ожидания 2000 мс. Я делаю что-то неправильно? Вывод по таймауту возвращает полный HTML, который я пытаюсь получить. Просто процесс не заканчивается, и он должен ждать.
Я искал в Google около часа и не могу понять, почему он это делает.
Спасибо за ваше помощь: D