2013-03-18 5 views
2

J'ai un script PHP qui effectue une importation de données à partir d'un partenaire fournisseur. L'une des choses qu'il doit faire est d'appeler un autre script via shell_exec() qui traite ensuite un fichier image et le télécharge dans un compartiment Amazon S3. Je regarde la sortie de ce script dans un terminal en ce moment, et après un certain temps je vois une série de messages le long des lignes de:PHP shell_exec() parfois ne fonctionne pas

Warning: shell_exec(): Unable to execute 'php -f /path/to/second/script.php /path/to/image/to/process.jpg' in /path/to/this/script.php on line 453

La chose étrange est que ce même script est appelé multiple fois dans ce script et travaille pour commencer, puis s'arrête. Il est appelé à partir d'autres scripts et fonctionne bien dans ceux-ci. Lorsque je copie la commande qu'elle ne peut pas exécuter et que je la colle moi-même, cela fonctionne toujours. Clairement, PHP est capable de l'exécuter parfois. Je ai mis un écho d'utilisation de la mémoire sur chaque ligne pendant son exécution, et je l'ai vu aussi haut que 148 Mo tout en travaillant correctement, et aussi bas que 77 Mo en cas d'erreur. (Ceci est dans le script principal, pas dans le script secondaire qui ne peut pas être exécuté). L'utilisation de la mémoire semble être de plus en plus faible au fur et à mesure que les erreurs commencent à arriver. La première fois, j'ai remarqué que c'était environ 88 Mo, puis 85 Mo, 81 Mo et 77 Mo.

Je ne suis pas sûr de ce qui pourrait causer le fonctionnement du script et parfois non. La dernière fois que j'ai vérifié, il n'était pas possible pour PHP de décider si cela peut être dérangé ou non, et ça ne s'use pas, alors pourquoi ça marche bien depuis des lustres (je parle de centaines, sinon de milliers de succès téléchargements) puis soudainement il cesse de fonctionner. Ce n'est pas qu'il essaie de traiter les images qui n'ont pas pu être téléchargées, car il y a une condition dans le script qui empêche cela et je vois souvent une charge de image does not exist même s'il ne traite pas le reste. J'ai fini par devoir écrire un autre script qui retravaille et traite toutes les images manquantes par la suite.

TOUTES les pensées seraient vraiment reçues avec reconnaissance! À propos, cela fonctionne sur une grande instance AWS EC2 avec le système d'exploitation Amazon Linux. Nous courons PHP5.3

+0

D'ailleurs, je l'ai essayé de changer la commande à '/ usr/bin/php -f /path/to/second/script.php/path/to/image/to/process.jpg' qui fonctionne aussi depuis la CLI, mais le script a toujours le même problème. PHP Safe Mode est désactivé –

+0

Avez-vous résolu celui-ci? J'ai aussi ce problème sur Amazon centos 7. – Silko

+0

HI @ Silko. Je n'ai jamais fait, non. J'ai quitté ce rôle quelques mois après avoir posté, donc ça n'a pas été un problème pour moi depuis :) –

Répondre

0

Je traitais avec la même question et je trouve que/HTAP/à/php est/usr/bin/php5

Questions connexes