web-dev-qa-db-fra.com

comment exécuter un fichier php à l'aide de tâches cron

J'ai un programme de messagerie électronique qui s'exécute tous les jours sur la page php à l'aide de tâches cron. Le code php fonctionne bien lorsque j'exécute la page à l'aide d'un lien.

Maintenant, lorsque j'exécute le script php à l'aide de tâches cron, cela fonctionne également très bien, mais lorsque je pose une requête, les tâches cron ne comprendront pas le lien.

par exemple: http://www.wetube.org/cron.php?id=01001 alors maintenant, si j'essaye de faire ça tous les jours avec cron, ça ne marche pas.

Mais si nous effaçons simplement la requête, cela fonctionne très bien. Connaissez-vous des codes qui permettent à ce lien de fonctionner en tâche cron?

15
Mustafa M Jalal

Cron exécute les commandes comme elles seraient exécutées via le Shell, donc exécuter PHP utiliserait des chemins locaux.

Vous devez utiliser une commande comme:

php /home/USER/public_html/cron.php

Ou si l'inclusion de la chaîne de requête est nécessaire, utilisez plutôt cURL (s'il est installé):

curl http://www.wetube.org/cron.php?id=01001

Vous voudrez peut-être ne pas exposer vos scripts cron à Internet - déplacez-les vers l'extérieur de votre répertoire Web, car si quelqu'un le trouve, il peut constamment le recharger pour spammer vos scripts cron (c'est-à-dire envoyer beaucoup d'e-mails)

37
wyqydsyq

J'ajouterais du hash comme

curl http://www.wetube.org/cron.php?id=01001&hash=cm349ucKuc023b2ynGyv23ycr23

et dans le fichier php

if(isset($_GET['hash']) && $_GET['hash']=='cm349ucKuc023b2ynGyv23ycr23'){
....
stuff to do
....
}

* vous pouvez même ajouter une vérification de date/heure spécifique quand il doit être exécuté.
* vous pouvez vérifier l'IP
* générer des hachages sha512 (je recommanderais) à la fois dans les fichiers cron et php avec le même sel et peut-être même le temps, puis vérifier s'ils sont identiques - il serait impossible pour un pirate de le recréer - sauf si il obtient en quelque sorte votre configuration de hachage d'origine

7
Calvin Grain