Besoin d'informations sur ce qu'est le cron job

Entourez votre code en utilisant "```" pour bien le mettre en forme. (ne copiez pas trop de code)

Ce que je veux

est-ce que mon hebergeur ne peut pas s'en charger,du cron job pour pas que mon ordinateur soit toujours allumé???

Ce que j'obtiens

6 réponses


Hello @le_big_dee, oui bien sûr c'est tout l'avantage des cron jobs, tu les programme depuis le site de ton hébergeur. En gros tu indiques un script php à exécuter et la fréquence d'éxécution. Tu peux lire ici pour voir un peu plus en détail :

https://aide.lws.fr/base/Hebergement-web-mutualise/Utilisation-de-PHP/tache-cron

J'ai jamais eu recours à ca mais sûrement que des gens du forum pourront t'en dire plus

Hello :)

Alors aucun soucis pour faire une tache CRON

Si tu es sur du PHP pur, faut faire un serveur NodeJs et une route api dans ton projet

Déjà faut faire un fichier server.js à la racine du projet, ensuite tu dois installer le package node-cron, et tu peux l'utiliser en faisant

cron.schedule('* * * * *', function() { // les * * * * * c'est le cron
  fetch("l'url de l'api de ton projet PHP à déclencher", {
    headers: {
        "Content-Type": "application/json", // on fait simple, tu va envoyer du json à ta route PHP
        "Authorization": `Bearer ${process.env.access_token}`, // Protèges ta route !!! Sinon DDOS :)
    },
    method: "post",
    body: Json.stringify({
        /* Si tu veux donner des données à ta route PHP */
    })
  }).then(response => response.json())
    .then(json_response => /* Ici tu as les données que te retourne ton controller PHP, depuis PHP renvoie un status "ok" pour dire que c'est bon, ou un statut "erreur" avec le message de l'erreur PHP pour programmer une notification, si tu as déjà un monitoring coté PHP pas besoin de mettre ça */)
})

Si tu veux juste un déclencheur sans passer de données, tu peux faire un fetch sans body en get

cron.schedule('* * * * *', function() {
  fetch("l'url de l'api de ton projet PHP à déclencher", {
    headers: {
         "Authorization": `Bearer ${process.env.access_token}`, // Protèges ta route !!! Sinon DDOS :)
    },
  }).then(response => response.json())
    .then(json_response => {
        if {json_response.error) {
            /* envoies toi un mail d'erreur, ou un call dans un dashboard, perso j'utilise AWS SNS et Cloudwatch ici */
        }
    })
})

Dans ton hébergeur cloud, tu a juste à lancer la commande node server.js et tu laisses tourner comme ça :p

Si tu utilises un framework, alors Symfony je sais pas faut voir la doc, Laravel tu lances dans ton serveur php artisan schedule:run et tu laisses tourner :p

Et en gros voila, pour ce qui est du code c'est théorique, adaptes le à tes besoins

merci énormement je vais essayer et je vous fait des retours;-)

Je tient à préciser juste que si on est sur du php pur on peut aussi lancer un script php avec un cron.

Par contre ce qu'il faut savoir c'est si l'hébergeur et la solution prise permettent d'avoir accès au crontab de l'os.

bien reçu, j'ai envoyé un mail a un hébergeur leur demandant toutes ces informations j'attends donc leur retour, mais je me suis renseigné sur le lien que jrcode a envoyé hier, leur système me semble respecter tout ces critères et en plus sa a l'air simple l'emploi (au fait j'ai créer un nouveau sujet si tu as le temps tu peux essayer de regarder c'est par rapport a un système "se rappeler de moi" que j'éssaie de mettre en place pour mon site mais étrangement j'arrive pas a faire un update dans mysql)..

Ahhh oui c'est vrai, je taffe sur des api extrenes du coup j'ai donné fetch, tu peux utiliser exec pour lancer des scripts, ou alors niveua system l'outil crontab qui lance php ta-commande, si tu as un serveur cloud simple tu peux utiliser ça

Autre solution: Regardes si ton back office propose des taches cron avec une UI gérée par l'hébergeur