Hallo zusammen,
ich bin neu hier im Forum und habe folgendes Problem:
Im Rahmen einer Webanwendung wird mit Hilfe des exec Befehls aus PHP heraus ein Programm gestartet, das komplexe Berechnungen durchführt. Zu ca. 80% funktioniert alles perfekt. Php startet mein Programm, das Programm wird abgearbeitet, das PHP-Script nimmt den Programmfluss wieder auf...
Gelegentlich passiert aber folgendes:
Die exe-Datei (test.exe) gibt die Programmsteuerung nicht an php zurück. Im Taskmanager hängt der Prozess (test.exe) und verschwindet nicht mehr. (gelegentlich heißt er seltsamerweise auch test.ex , das e bei 'exe' fehlt dann). Das Php-script wird nicht weiter ausgeführt, weil es ja auf die Abarbeitung der exe wartet. Die Exe (in C geschrieben) wiederum berechnet auch im Fehlerfall alles korrekt, da die letzte Zeile vor der return Anweisung im exe Programm korrekt ausgeführt wird (schreibt einen Wert in eine Datei, der Wert ist auch dann wenn die exe "hängt" korrekt).
Ist der Fehler einmal aufgetreten, so hängen sich auch alle weiteren
Requests auf. Der Webserver muss restartet werden, bevor die Exe bei folgenden Requests wieder korrekt abgearbeitet werden kann.
Wenn ich die Exe nicht aus php heraus starte, sondern auf der
Windows-Kommandozeile, dann wurde bis jetzt noch kein Absturz beobachtet, auch bei mehrfacher Ausführung nicht.
Die Exe habe ich mit einem Memory-Checker auf Speicherfehler überprüft und keine gefunden.
Ich habe den Eindruck, dass der Absturz besonders oder nur dann auftritt, wenn gleichzeitige Requests an den Webserver stattfinden, folglich wird die exe gleichzeitig ausgeführt. Dies wiederum sollte aber kein Problem sein, da PHP jede Instanz der Exe in einem eigenen Prozess startet?
Auf folgender Konfiguration läuft das ganze:
Windows Server 2003
Apache 2.0.59
Php 5.1.6
vielen Dank für eure Ideen
Michael
ich bin neu hier im Forum und habe folgendes Problem:
Im Rahmen einer Webanwendung wird mit Hilfe des exec Befehls aus PHP heraus ein Programm gestartet, das komplexe Berechnungen durchführt. Zu ca. 80% funktioniert alles perfekt. Php startet mein Programm, das Programm wird abgearbeitet, das PHP-Script nimmt den Programmfluss wieder auf...
Gelegentlich passiert aber folgendes:
Die exe-Datei (test.exe) gibt die Programmsteuerung nicht an php zurück. Im Taskmanager hängt der Prozess (test.exe) und verschwindet nicht mehr. (gelegentlich heißt er seltsamerweise auch test.ex , das e bei 'exe' fehlt dann). Das Php-script wird nicht weiter ausgeführt, weil es ja auf die Abarbeitung der exe wartet. Die Exe (in C geschrieben) wiederum berechnet auch im Fehlerfall alles korrekt, da die letzte Zeile vor der return Anweisung im exe Programm korrekt ausgeführt wird (schreibt einen Wert in eine Datei, der Wert ist auch dann wenn die exe "hängt" korrekt).
Ist der Fehler einmal aufgetreten, so hängen sich auch alle weiteren
Requests auf. Der Webserver muss restartet werden, bevor die Exe bei folgenden Requests wieder korrekt abgearbeitet werden kann.
Wenn ich die Exe nicht aus php heraus starte, sondern auf der
Windows-Kommandozeile, dann wurde bis jetzt noch kein Absturz beobachtet, auch bei mehrfacher Ausführung nicht.
Die Exe habe ich mit einem Memory-Checker auf Speicherfehler überprüft und keine gefunden.
Ich habe den Eindruck, dass der Absturz besonders oder nur dann auftritt, wenn gleichzeitige Requests an den Webserver stattfinden, folglich wird die exe gleichzeitig ausgeführt. Dies wiederum sollte aber kein Problem sein, da PHP jede Instanz der Exe in einem eigenen Prozess startet?
Auf folgender Konfiguration läuft das ganze:
Windows Server 2003
Apache 2.0.59
Php 5.1.6
vielen Dank für eure Ideen
Michael
Kommentar