46 votes

Passer des paramètres $_GET à un job cron

Je suis novice en matière de tâches cron et je ne suis pas sûr que cela fonctionnerait.

Pour des raisons de sécurité, j'ai pensé à créer une page script qui recherche certaines valeurs GET (un nom d'utilisateur, un mot de passe et un code de sécurité) pour s'assurer que seuls l'ordinateur et quelqu'un qui connaît ces trois éléments peuvent exécuter la commande.

J'ai créé le script et il fonctionne dans un navigateur, mais est-il possible d'exécuter le job cron avec des valeurs GET ?

Par exemple, je peux courir

* 3 * * * /path_to_script/cronjob.php?username=test&password=test&code=1234

Est-ce possible ?

0voto

Peter Points 1994

Je trouve utile d'utiliser la fonction getopt() lorsque j'ai besoin des paramètres d'un cron ou d'une commande console.

Cette fonction renvoie un tableau de paires option/argument, ou FALSE en cas d'échec.

Les exemples suivants sont directement tirés de la documentation PHP.

$options = getopt("f:hp:");
var_dump($options);

shell> php example.php -fvalue -h

L'exemple ci-dessus produira un résultat :

array(2) {
    ["f"]=>
    string(5) "value"
    ["h"]=>
    bool(false)
}

Pour plus d'options et de paramètres différents, consultez la documentation complète.

Ressources

-1voto

FiddlingAway Points 131

Si votre script est appelé à plusieurs endroits (pas seulement dans votre cronjob), et que vous ne voulez pas changer le code original (c.-à-d. continuer à utiliser $_GET['foo'], $_GET['bar'] ou $_POST['foo'], $_POST['bar'] ), vous pouvez utiliser wget (en supposant qu'il existe / qu'il est installé sur votre serveur).

Par exemple :

* 3 * * * wget -qO- 'http://yoursite.com/path_to_script/cronjob.php?username=test&password=test&code=1234' > /dev/null 2>&1

-q est l'option utilisée pour le mode silencieux (pas de sortie), et O- moyens Output to stdout .

Étant donné que la réponse n'est pas quelque chose que vous conserveriez normalement (enregistrer dans un fichier), la fonction /dev/null 2>&1 permet de s'assurer que quelle que soit la réponse renvoyée par votre script ( echo , printf etc.) ne seront sauvegardés nulle part.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X