passer crontab une variable et le lire à partir de PHP?
J'ai créé un crontab règle:
* * * * * php /my/directory/file.php
Je veux passer une variable à être utilisé dans le file.php à partir de ce crontab.
Quelle est la meilleure méthode pour faire cela?
OriginalL'auteur Hesham Saeed | 2012-04-22
Vous devez vous connecter pour publier un commentaire.
Garder à l'esprit que l'exécution de PHP à partir de la coquille est complètement différent de l'exécuter dans un environnement de serveur web. Si vous n'avez pas fait de ligne de commande de programmation avant, vous risquez de rencontrer quelques surprises.
Cela dit, la manière habituelle de transmettre des informations sur une commande est en le mettant sur la ligne de commande. Si vous faites cela:
Puis à l'intérieur de votre script,
$argv[1]
sera mis à"some value"
et$argv[2]
sera mis à"some other value"
. ($argv[0]
sera mis à"/my/directory/file.php"
).Est votre PHP construit pour la ligne de commande? C'est une autre SAPI, et exige un PHP de celui que vous utilisez pour les scripts Cgi.
J'utilise la commande shell_exec("commande"); pour créer des crontabs
J'ai tout compris (pas besoin de citations), merci beaucoup.
OriginalL'auteur Mark Reed
Lorsque vous exécutez un script PHP en ligne de commande, vous pouvez accéder à la variable de comptage de
$argc
et les valeurs réelles dans le tableau$argv
. Un exemple simple.Envisager test.php
De l'exécution de cette aide
php test.php a b c
:OriginalL'auteur kba
Peut-je ajouter à la
$argv
réponses que pour les plus sophistiqués paramètres de ligne de commande de manipulation, vous pourriez vouloir utilisergetopt()
: http://www.php.net/manual/en/function.getopt.phpOriginalL'auteur lafor
Aucune des méthodes ci-dessus a fonctionné pour moi. - Je exécuter cron sur mon hébergeur du serveur partagé. La tâche cron est créé avec le cPanel-comme l'interface. Les appels de ligne de commande de PHP en lui passant le nom du script et quelques arguments.
C'est la façon dont la ligne de commande pour cron ressemble:
php7.2 /server/path/to/my/script/my-script.php "test.tst" "folder=0"
Aucune des réponses ci-dessus avec
$argv
fonctionné pour mon cas.Le problème était que personne ne vous a dit, vous devez déclarer
$argv
mondiale avant d'obtenir l'accès à la CLI d'arguments. Ce n'est ni mentionné dans l'officiel de manuel PHP.Bien, probablement l'un doit déclarer
$argv
mondiale ony pour l'exécution des scripts avec le serveur. Peut-être dans un environnement local de lancer le script en CLI$argv
ne nécessite pas d'être déclaré mondiale. Quand je l'ai tester je poste ici.Mais nevertherless pour mon cas, le travail de configuration est:
J'ai obtenu les mêmes résultats avec
$_SERVER['argv']
superglobale tableau.On peut l'utiliser comme ceci:
Espère que ça aide quelqu'un.
OriginalL'auteur bob-12345