Umleitung der Standard-Ausgabe Effizient .NET
Ich versuche zu rufen php-cgi.exe aus einer .NET-Programm. Ich benutze RedirectStandardOutput die Ausgabe wieder als stream, aber die ganze Sache ist sehr langsam.
Haben Sie eine Idee, wie ich das machen kann, dass schneller? Jede andere Technik?
Dim oCGI As ProcessStartInfo = New ProcessStartInfo()
oCGI.WorkingDirectory = "C:\Program Files\Application\php"
oCGI.FileName = "php-cgi.exe"
oCGI.RedirectStandardOutput = True
oCGI.RedirectStandardInput = True
oCGI.UseShellExecute = False
oCGI.CreateNoWindow = True
Dim oProcess As Process = New Process()
oProcess.StartInfo = oCGI
oProcess.Start()
oProcess.StandardOutput.ReadToEnd()
- Vielleicht haben Sie Interesse in diesem post, die deckt viele der Feinheiten arbeiten .NET-Prozess-streams. Es empfiehlt sich, die MedallionShell - Bibliothek, die erheblich vereinfacht diese Aufgabe, und verwenden können, async, um Blockierungen zu verhindern
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die OutputDataReceived Veranstaltung, um Daten zu empfangen, wie es gepumpt, um StdOut.
Die beste Lösung, die ich gefunden habe, ist:
Ist das problem durch eine schlechte php.ini-config. Ich hatte das gleiche problem und ich habe die Windows installer-von: http://windows.php.net/download/.
Danach und das auskommentieren der nicht benötigten Erweiterungen, die Konvertierung Alà gebildet Speedy Gonzales, Umwandlung von 20 php pro Sekunde.
Können Sie sicher nutzen "oProcess.StandardOutput.ReadToEnd()". Es ist besser lesbar und alomost so schnell wie mit dem thread Lösung. Zu den thread-Lösung in Verbindung mit einem string, den Sie führen eine Veranstaltung oder so etwas.
Cheers