Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/12/2010, 21h11   #1
Membre régulier
 
Inscription : juin 2008
Messages : 273
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 273
Points : 81
Points : 81
Par défaut Lancer un fichier php avec exec() ou similaires

Bonjour,

J'aimerai, lorsqu'un visiteur accède à une de mes pages php, qu'une autre page soit lancé, en background.

Je voulais donc utiliser :
Code :
$out = exec("php5 auto.php");
Mais le fichier auto.php n'est jamais atteint.
De plus, dans la variable de sortie $out il y a le contenu (html) de la page en cours.
J'ai essayé toutes les autres fonctions (shell_exec, system, popen, nohup, etc) : même problème.
J'ai essayé de mettre les chemins complet de php5 et du fichier php, même problème.

Par contre, quand j'entre directement "php5 auto.php" dans un shell, cela fonctionne très bien.

Comment faire ?

Merci.
jeremm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 21h18   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Pourquoi ne pas faire un include() ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 21h20   #3
Membre régulier
 
Inscription : juin 2008
Messages : 273
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 273
Points : 81
Points : 81
En fait mon fichier auto.php fait un traitement qui est assez long (1minute).
Si je fais include ou require l'utilisateur va devoir attendre la fin du traitement.. je veux le parralléliser
jeremm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 21h26   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Tu es sur d'avoir un fichier php5 ?
Le fichier fourni avec php5 est php (php.exe pour windows)
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 21h29   #5
Membre régulier
 
Inscription : juin 2008
Messages : 273
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 273
Points : 81
Points : 81
Le serveur (mutualisé) est sous linux.
Quan j'entre php5 fichier.php en ligne de commande ça fontionne!
jeremm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 13h14   #6
Membre chevronné
 
Inscription : mars 2005
Messages : 583
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 583
Points : 651
Points : 651
Hello,

Déjà, si tu es sur un mutualisé, il y a des chances que les fonctions exec et toute la bande soient désactivées. À vérifier dans le phpinfo.

Sinon quoi qu'il en soit, passer par exec ne parallélisera pas l'exécution. PHP attendra juste le retour de la fonction exec() avant de traiter la ligne suivante.
__________________
Pourfendeur de singletons en croisade
Petibidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 17h28   #7
Membre régulier
 
Inscription : juin 2008
Messages : 273
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 273
Points : 81
Points : 81
Citation:
Envoyé par Petibidon Voir le message
À vérifier dans le phpinfo.
Quelle ligne dois-je vérifier ?
Un exec("date") et exec("ls") fonctionnent bien.

Citation:
Sinon quoi qu'il en soit, passer par exec ne parallélisera pas l'exécution. PHP attendra juste le retour de la fonction exec() avant de traiter la ligne suivante.
Ah bon, je ne savais pas.
Quelle est la solution ? passer par un script shell qui lui appel le php ? ou autre chose ?
jeremm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 17h48   #8
Membre régulier
 
Inscription : juin 2008
Messages : 273
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 273
Points : 81
Points : 81
Comme je pensais, j'ai créé un script shell qui lui appel mon fichier php.
J''ai donc :

index.php :
Code :
system("sh script.sh");
script.sh:
Code :
php5 auto.php > log.txt 2>&1
Dans log.txt j'ai :
Citation:
X-Powered-By: PHP/5.2.14
Content-type: text/html

script.sh: fork: retry: Resource temporarily unavailable
script.sh: fork: retry: Resource temporarily unavailable
script.sh: fork: retry: Resource temporarily unavailable
script.sh: fork: retry: Resource temporarily unavailable
script.sh: fork: Resource temporarily unavailable
Qu'en pensez vous ?!
jeremm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2010, 21h21   #9
Membre régulier
 
Inscription : juin 2008
Messages : 273
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 273
Points : 81
Points : 81
Quel est ce warning ?
jeremm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 22h26   #10
Membre régulier
 
Inscription : juin 2008
Messages : 273
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 273
Points : 81
Points : 81
Personne ne connait
Citation:
script.sh: fork: retry: Resource temporarily unavailable
?
jeremm est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h09.


 
 
 
 
Partenaires

Hébergement Web