8768 sujets

Développement web côté serveur, CMS

Bonjour,

Je cherche désespérément depuis plusieurs jours comment configurer une tâche CRON avec une route et pas un fichier.

Je m'explique : dans mon interface Plesk, quand je configure une tâche CRON, on me demande une commande à exécuter.

J'ai toujours eu l'habitude d'utiliser "php -f" avec le chemin d'un fichier, seulement voilà, aujourd'hui le chemin que je souhaite configurer est une route de type "/actualites/commentaires/".

php -f attends un fichier et cela ne fonctionne pas. Et en regardant la doc de la commande, je ne trouve rien qui puisse m'aider. Mes recherches sur Google ne m'ont pas plus avancé ...

Une idée ? Smiley smile
Tu aimerais en fait exécuter par cron un script qui se cache derrière des réécritures apache ?

Si c'est ça que tu veux, tu dois obligatoirement passer par apache pour pouvoir le faire; passer par apache ça signifie en clair exécuter une requête HTTP.

Exécuter une requête HTTP en tâche cron c'est pas compliqué, tu peux le faire avec wget ou curl par exemple. Les deux gros inconvénients de passer par là c'est que 1/évidemment c'est un peu plus lent vu que tu passes par le réseau (donc si c'est toutes les minutes bof), et surtout 2/l'aspect sécuritaire, car le script doit alors être accessible d'une manière ou d'une autre depuis l'extérieur; même si tu mets des login, tu ouvres quand même potentiellement une porte.

A partir de là à toi de voir. A mon avis, ce serait mieux que tu détermines le fichier qui doit être exécuté et les paramètres qui doivent lui être passés pour que ça fonctionne sans passer par HTTP.



Si c'est pas du tout ça que tu cherches, des explications plus détaillées ne seraient sûrement pas de trop.
Ouais, c'est ce que je veux faire. J'ai testé avec Curl et ça fonctionne très bien.

Mon script s'exécute qu'une seule fois par heure, mais il peut être long (2-3 minutes). Il n'y a pas de moyen de se servir d'apache sans passer par le réseau ?

Concernant la sécurité, je vais voir ce que je peux faire de ce côté là.

Merci en tout cas de ta réponse.
a écrit :
Mon script s'exécute qu'une seule fois par heure, mais il peut être long (2-3 minutes). Il n'y a pas de moyen de se servir d'apache sans passer par le réseau ?

Non. Mais si c'est un script long qui s'exécute qu'une fois par heure, l'impact local vs réseau en terme de performances n'est au final pas très significatif. C'est au niveau sécurité qu'il faut faire un peu gaffe.
En effet l'impact n'est pas très important du coup.

Concernant la sécurité, l'URL ne donne accès à aucune donnée. Le script enregistre des infos en base et affiche une page blanche. Aucune donnée ne s'affiche. De plus, j'ai ajouté un token dans l'URL, pour la rendre complexe.

A partir de là, je ne vois pas quels problèmes de sécurité cela pourrait poser.
Une solution plus simple de tâche cron, vous pourriez envisager services Webcron (easycron.com) qui va charger une URL spécifique à un moment donné.