CRON : Script PHP à executer à des heures aléatoires dans une plage horaire
... / CRON : Script PHP à execu...
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Question

CRON : Script PHP à executer à des heures aléatoires dans une plage horaire

by
PatrickU2
Created on 2024-10-16 23:57:52 (edited on 2024-11-18 11:03:28) in Hébergement Web-old

Je souhaite créer un script PHP qui s'exécute à des heures aléatoires dans la journée
Ce script va mettre à jour une BDD mais je souhaite que cela s'exécute à des horaires aléatoires dans une plage horaires (par exemple entre 9h et 17h)

Le script est prêt mais comment faire paramétrer le CRON pour que le script PHP s'éxécute à des heures aléatoires ?

Merci de votre aide


7 Replies ( Latest reply on 2024-11-18 11:04:00 by
PatrickU2
)

Bonjour @PatrickU2

Une piste peut-être :

https://stackoverflow.com/questions/9049460/cron-jobs-and-random-times-within-given-hours

Exemple :
`30 8-21/* * * * sleep $[RANDOM\%90]m ; /path/to/script.php`

Je la connaissais pas celle là :)


$[RANDOM\%90]m


Danger ici.

Si on ajoute un random entre 0 et 89 minutes, deux jobs consécutifs peuvent se télescoper, car le premier est toujours dans le sleep lorsque le suivant se déclenche.

J'aurais plutôt eu tendance à mettre %45 afin d'avoir une marge de sécurité, et par la même occasion éviter que le job s'exécute 2x à une minute d'intervalle dans le cas extrême, si le premier sleepe 59m et le second 0m.

On peut aussi "sleeper" un nombre de secondes aléatoires plutôt que des minutes, afin de "randomiser" plus.

Par exemple $[RANDOM\%2700]

Ou bien mettre un lock file pendant que le job s'exécute. Dans ce cas il faut bien étudier comment gérer la concurrence si les 2 jobs s'exécutent pile en même temps.

Bonjour,

sinon ici on s'en fou, car on est d'accord que le manager OVH ne vous laisse pas faire n'importe quoi dans la création d'une tâche cron ?

Cordialement, janus57

euh ? j'ai pas compris, on met où ce script ?


euh ? j'ai pas compris, on met où ce script ?

Le n'en sais strictement rien.
Je vous ai donné une piste _(trouvée sur Internet)_. A vous de l'approfondir.

Sinon, j'y pense. On effectue une tache CRON toutes les heures
dans le script PHP du fichier à exécuter, on fait un random entre 0 et 1, et si la valeur est > 0,5, on effectue la tache ?

Faut que je trouve comment faire un Random en PHP et faire le IF > 0,5

Merci