2010-05-26 6 views
0

J'ai un fichier qui possède plusieurs paramètres dynamiques. Je veux envoyer ces paramètres au moment de l'écriture d'un fichier dans le fichier cron principal. Quelque chose comme ceci ->comment envoyer plusieurs commandes à un fichier dans cron?

*/15 * * * * /usr/bin/php /a/b/c.php parameter1 parameter2 parameter3 parameter4 

Maintenant j'ai essayé ceci fonctionnant vers le haut mais mon dossier n'exécute pas. Ce qui m'inquiète, c'est comment mon fichier php récupérera ces paramètres? Et comment vais-je écrire cette commande quand il n'y a que 2 paramètres à passer paramètre1 et paramètre4 ??? et comment mon cron et php vont reconnaître quel paramètre est pour quelles données et tout ?? s'il vous plaît conseil !!

Répondre

0
*/15 * * * * "/usr/bin/php /a/b/c.php parameter1 parameter2 parameter3 parameter4" 

peut-être ...

aussi vous pouvez le transmettre comme une chaîne de requête? p1 = 123 = 432 & p2 = 456 & p3 dans le script, vous pouvez simplement faire un parse_string pour le convertir en un tableau ...

+0

mais comment puis-je envoyer la chaîne de requête avec ce type de fichier appelant:/home/abc/xyz /ert.php ??? chaîne de requête est possible dans http: // type d'URL, mais comment vais-je l'écrire dans le format de chemin ??? – developer

+0

Vous ne pouvez pas passer une chaîne de requête via une ligne de commande. – Joseph

+0

p1 = 123-p2: 123 ... c'est possible ... – Tobias

0

Dans ce cas, il sera tableau dans votre script avec ces paramètres.

vous pouvez également créer un fichier exécutable avec le contenu:

#!/usr/bin/php 
<? 
    require('yourscript.php'); 

et le rendre exécutable avec chmod +x thisfile. Juste pour ne pas passer votre nom de fichier à l'interpréteur php dans crontab.

0

La façon dont vous devez prendre pour faire ce travail de script est le suivant:

Dans le script cron définir les paramètres à chaque être des chaînes de requête. Par exemple, définissez p1=1234 comme paramètre1, etc.

Dans le script PHP, vous devez référencer le tableau $argv pour obtenir les paramètres transmis.

$ argv [1] sera paramètre1, $ argv [ 2] est le paramètre 2, et ainsi de suite.

Vous pouvez ainsi déterminer quel paramètre qui en utilisant la commande d'exploser pour séparer la clé de la valeur:

for($x=1; $x < $argc; $x++) { 
    list($key, $value) = explode('=', $argv[1]); 
    $paramarray[$key] = $value; 
} 
Questions connexes