2010-10-15 15 views
0

Salut, il existe plusieurs exemples spécifiques, mais je voulais juste avoir un générique appelant PHP appelant en arrière-plan de shell_exec.shell_exec exemple php

Donc, ma fonction php exécute un gros travail de traitement.

En haut du script (process.php) je mets?

!#usr/bin/php 

Je pense - un moyen d'obtenir ce chemin spécifique, peut-être «quel php»?

alors la commande réelle est

shell_exec(sprintf('php process.php %s %s > /dev/null 2>/dev/null &','data1','data2')); 

et accéder aux données de process.php avec argsv[1] et argsv[2]

?

grâce

+0

La syntaxe de tralala est '#/chemin/vers/interpreter', pas' # 'comme vous l'aviez, et oui, en utilisant 'quel php' obtiendra le chemin que vous devriez utiliser dans le script. Cependant, le shebang n'est nécessaire que si vous avez l'intention de l'exécuter directement sur la ligne de commande, c'est-à-dire './Nameofscript'. Si vous utilisez le 'php nameofscript.php', il est redondant, car vous utilisez déjà PHP explicitement. –

Répondre

0

Vous pouvez certainement accéder aux arguments de process.php la façon dont vous avez décrit, mais pourquoi voudriez-vous lancer process.php comme ça?

Si vous êtes déjà dans un script shell php, pourquoi ne pas inclure le fichier process.php?

+0

Comment je fais ça? – ronaktal

+0

il n'accède pas à l'autre script? Existe-t-il un moyen d'exécuter une fonction locale via shell_exec? – ronaktal

+0

Depuis n'importe quel script php exécuté à partir de la ligne de commande, ou via shell_exec, vous pouvez accéder aux arguments avec le tableau argv. Au lieu d'exécuter un autre script php avec shell_exec, pourquoi ne pas utiliser une instruction include, telle que include ('process.php') ;? –

0

Vous devez exécuter curl multi exec sur votre script php avec un paramètre et recevoir une réponse après l'exécution, comme:! http://localhost/phpjob.php?par1=asdasd&par2=1212....