2010-11-17 8 views
5

Ich versuche, ein paar Python-Skripte auszuführen, um einige Bilder auf meiner Website zu manipulieren. Das externe Programm/Tool ist in Python geschrieben und heißt PHATCH. Ich bin unter Windows und verwende WAMP als meinen Webserver.Das gleichzeitige Ausführen mehrerer Python-Skripte lässt PHP/Apache hängen

Die Ausführung von nur einem Skript scheint gut zu funktionieren, aber ich muss 4 Skripte gleichzeitig ausführen (um 4 verschiedene Bilder zu erzeugen), mein Browser lädt nur und Apache/PHP friert ein.

Die PHP-Ausführung scheint zu frieren und hängt wegen mehrerer system() - Aufrufe hintereinander. Hier ist ein Beispiel dafür, wie ich es bin mit:

system("C:\\python\\python.exe C:\\phatch\\phatch.py script1.phatch"); 
system("C:\\python\\python.exe C:\\phatch\\phatch.py script2.phatch"); 
system("C:\\python\\python.exe C:\\phatch\\phatch.py script3.phatch"); 
system("C:\\python\\python.exe C:\\phatch\\phatch.py script4.phatch"); 

Wenn ich nur dem ersten zu tun, es ist in Ordnung, aber sobald ich die andere hinzufügen, das alles gefriert.

+1

Haben Sie alle vier einzeln ausprobiert? Das heißt, versuchte script1.phatch, dann ersetzt es mit script2.phatch, etc.? Es könnte nur sein, dass es eines der vier Skripte ist, dass das Problem ist. –

+0

Sie wissen, dass es nicht alle 4 zur gleichen Zeit läuft, oder? Es läuft nacheinander (nacheinander) ... Der einzige Weg unter Windows ist etwas zu tun wie [dies] (http://stackoverflow.com/questions/4197579/nohup-on-windows-exec-without) -waiting-for-finish-php/4197625 # 4197625) – ircmaxell

+0

Haben Sie die Systemlast im Task-Manager überprüft? – stillstanding

Antwort

0

Können mehrere Kopien von Phatch gleichzeitig vom selben Konto ausgeführt werden? Hast du das ohne PHP und Apache probiert?

Es ist möglich, dass mehrere Kopien gleichzeitig auf die gleichen Dateien zugreifen, vielleicht die gleichen temporären Dateien verwenden (sogar mit eindeutigen Namen, wenn der Name auf der Zeit basiert, sie könnten den gleichen Namen haben ...)

+0

Gute Frage! Das könnte das Problem sein; Sie sehen, nur eine "cmd.exe" wird gestartet, mit anderen Mitteln, nur eine Instanz von Phatch gestartet wird und das ist vielleicht, warum es friert .. eine Idee, wie man 4 verschiedene Aufrufe an das Skript spawn? – Eric

+2

Oder eine andere Idee, die Ihre Kommentare oben liest: Wenn Sie sie seriell ausführen möchten, warum schreiben Sie nicht einfach ein kurzes Python-Skript, das alle vier Skripte ausführt? Dann brauchen Sie nur einen Systemaufruf. Und aus Effizienzsicht wird Python erst EINMAL gestartet! – winwaed

+0

Oh .. Ich fühle mich so dumm .. \: Ich habe das jetzt versucht und es scheint perfekt zu funktionieren! Ich habe es jetzt schon 50 Mal probiert und bisher noch nicht gehangen, also war das wohl eine Lösung! VIELEN DANK (: – Eric