2010-11-17 24 views
5

J'essaye d'exécuter quelques scripts python afin de manipuler certaines images sur mon site web. Le programme/outil externe est écrit en python et s'appelle PHATCH. Je suis sous Windows et utilise WAMP comme serveur web.L'exécution de plusieurs scripts Python en même temps provoque le blocage de PHP/Apache

L'exécution d'un seul script semble bien fonctionner, mais j'ai besoin d'exécuter 4 scripts en même temps (pour générer 4 images différentes), mon navigateur va juste se charger et Apache/PHP se bloque.

L'exécution de PHP semble se bloquer et se bloquer en raison de plusieurs appels system() l'un après l'autre. Voici un exemple de la façon dont je l'utilise:

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"); 

Si je ne fais que le premier, il est très bien, mais dès que j'ajouter les autres, tout se fige.

+1

Avez-vous essayé les quatre individuellement? C'est-à-dire, essayé script1.phatch, puis remplacé par script2.phatch, etc? Il se pourrait que ce soit l'un des quatre scénarios qui pose problème. –

+0

Vous vous rendez compte qu'il ne fonctionne pas tous les 4 en même temps, non? Il les exécute en série (l'un après l'autre) ... La seule façon de contourner cela sur Windows est de faire quelque chose comme [ceci] (http://stackoverflow.com/questions/4197579/nohup-on-windows-exec-withoutout -waiting-for-finish-php/4197625 # 4197625) – ircmaxell

+0

Avez-vous pris la peine de vérifier la charge du système dans le Gestionnaire des tâches? – stillstanding

Répondre

0

Est-ce que plusieurs copies de phatch peuvent être exécutées simultanément à partir du même compte? Avez-vous essayé ceci sans PHP et Apache?

il est possible que plusieurs copies démarrant en même temps accèdent aux mêmes fichiers, utilisent peut-être les mêmes fichiers temporaires (même avec des noms uniques, si le nom est basé sur l'heure, ils pourraient avoir le même nom ...)

+0

Bonne question! Ca peut être le problème; vous voyez qu'un seul "cmd.exe" est démarré, par d'autres moyens, une seule instance de phatch est démarrée et c'est peut-être pourquoi ça gèle .. aucune idée de comment générer 4 appels différents au script? – Eric

+2

Ou une autre idée de lire vos commentaires en haut: Si vous voulez les exécuter en série, pourquoi ne pas simplement écrire un court script Python qui exécute les quatre scripts? Alors seulement besoin d'un appel système. et d'un point de vue efficacité, Python n'est démarré qu'une FOIS! – winwaed

+0

Oh .. Je me sens tellement bête .. \: J'ai essayé cela maintenant et il semble fonctionner parfaitement! J'ai essayé maintenant comme 50 fois et pas accroché jusqu'ici donc je suppose que c'était une solution! MERCI (: – Eric