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
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
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