Executer un script en background avec PHP

8 réponses
AuteurMessage

krucial |
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 29/11/2005 à 14:01

Alors je vais essayer d'etre clair meme si je doute que je vais y arriver

J'essaye de faire en sorte que PHP execute un prog en background et passe a la suite, meme si le prog n'a pas fini son execution.

J'ai testé ca :

<? exec("/le/script &"); ?>

En ligne de commande, ca rend la main, mais là, ce con de PHP attend que l'execution du script soit terminée pour continuer. Je ne sais pas comment faire, quelqu'un a une idée ?

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 29/11/2005 à 14:33

Ton prog doit s'executer aussitot ou bien tu peux attendre 30s ?

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 29/11/2005 à 14:33

Nan justement, je voulais que ca soit PHP. Et j'ai trouvé :
<? exec("/le/script > /dev/null &"); ?>

Et ca marche. C'est pas beau ?

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

bhamp0 | Benjamin
Membre

Photo de bhamp0

Inscrit le : 09/05/2005

# Le 29/11/2005 à 15:12

non, spa beau du tout pourquoi utiliser PHP pour faire ça ? (alors que d'autres langages sont plus appropriés à priori ...)

Quand on voit c'qu'on voit, et qu'on entend c'qu'on entend, on a raison d'penser c'qu'on pense !

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 29/11/2005 à 15:39

euh... en quoi PHP n'est il pas approprié ici ? :s
Il s'agit de lancer un programme en tache de fond (n'importe lequel, qu'il s'agisse d'un script SH, un script PHP, un prog java, etc).

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 29/11/2005 à 16:05

En dev, faut toujours qu'il y ait quelqu'un pour te dire qu'on peut faire mieux que ce que tu fais, c'est fatigant. Je ne t'en veux pas et je te critique pas bhamp0, c'est toujours comme ca. Meme moi.

Bref, j'ai reussi, ca marche exactement comme je veux, maintenant, la façon dont ca marche, c'est un autre probleme

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

bhamp0 | Benjamin
Membre

Photo de bhamp0

Inscrit le : 09/05/2005

# Le 29/11/2005 à 16:13

Non mais la solution est bonne, mais je comprend pas spécialement pourquoi tu utilises PHP pour ça Je me renseigne, y'a p't'être une raison qui fait que tu peux pas utiliser autre chose ... et ça m'intéresse, that's all

Quand on voit c'qu'on voit, et qu'on entend c'qu'on entend, on a raison d'penser c'qu'on pense !

flush | Jean-Philippe
Modérateur

Photo de flush

Inscrit le : 09/05/2005

# Le 29/11/2005 à 18:05

Lol intéressant cette commande ;)

@+ Jean-Philippe

bhamp0 | Benjamin
Membre

Photo de bhamp0

Inscrit le : 09/05/2005

# Le 15/07/2006 à 09:17

Je savais bien que j'en aurais besoin un jour ! Ah tu vois, kru, t'aurais dû m'expliquer à l'époque

Là, en fait, j'utilise un framework php en développement, et j'essaie d'améliorer la gestion des tâches cron (qui sont lancées par l'utilisateur lors de la visite d'une page).
J'aimerai passer l'exécution de la tâche en background afin que l'utilisateur n'ait pas à attendre la fin de l'exécution (genre je lance la sauvegarde d'une table, ça va le faire un peu ch*er d'attendre ...)
Donc je tente actuellement d'utiliser exec(), mais je n'arrive pas à lancer un script php.
Je fais par exemple :

exec("/usr/php5/bin/php index.php var1=val1 2>/dev/null >&- <&- >/dev/null &");

En fait, le problème, c'est que ça fonctionne parfaitement en ligne de commande, mais dès que c'est via browser, le serveur s'affole (en gros, je me retrouve avec pleins de processus php qui semblent se lancer entre eux et disparaître aussitôt ...
Si c'est du shell (j'ai pas tenté d'autres langages ...), ça semble fonctionner parfaitement même via browser.
Des idées ?

Merci d'avance ...

Quand on voit c'qu'on voit, et qu'on entend c'qu'on entend, on a raison d'penser c'qu'on pense !

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 9:17:45 | Généré en 34.62ms | Contacts | Mentions légales |