Se connecter / S'enregistrer

Résolu PHP : faire un évènement une fois par mois

Solutions (10)
Tags :
  • Php
  • Programme
  • Rss
  • Programmation
|
Bonjour à tous,

mon programme me permet actuellement d'enregistrer dans une BDD des données provenant de flux RSS, tout marche bien, j'ai trouvé comment faire, je souhaiterais juste que cette action s'effectue, par exemple, une fois par mois. Pour le moment, j'ai une page php sur laquelle il faut se rendre pour actualiser.

Est-ce que je dois récupérer la date et utiliser cette variable ou avez-vous une autre solution ?

Merci par avance
Contenus similaires
Meilleure solution
partage
|
Salut;

Il y a une autre possibilité si tu ne veux pas utiliser le Crontab (ou si ton hébergeur ne te le propose pas)

Tu peux utiliser un code au début de ton script qui teste la date;
Exemple:
  1. // Le principe est de stocker le mois/ la semaine ou le jour où le traitement a été lancé;
  2. $test = mysql_query("select valeur from table_compteur where type='traitement' limit 1"); // Ici j'utilise une table fictive
  3.  
  4. if(mysql_num_rows($test)>0) {
  5. $mois = mysql_fetch_array($test); // Je récupère les infos de ma table
  6. if($mois['valeur']==date("m")){ // Si la valeur stockée est égale au mois en cours...
  7. // ça veut dire que le traitement a déjà été fait, donc je ne fais rien.
  8. }
  9. else{ // Sinon, c'est que le mois en cours est passé !
  10. // Je peux donc effectuer mon traitement à la suite
  11. // [...]
  12. // IMPORTANT ! Il ne faut pas oublier de mettre à jour la valeur dans la table pour éviter que le traitement soit effectué plusieurs fois.
  13. mysql_query("update table_compteur set valeur='".date("m")."' where type='traitement' ");
  14. // Hé voilà!
  15. }
  16.  
  17. }
  18. else {// Si l'entrée n'existe pas dans la table, je la créée en y insérant le mois en cours;
  19. mysql_query("insert into table_compteur (type,valeur) values ('traitement','')"); // Je donne une valeur vide pour que le traitement se lance lorsque le script sera rappelé.
  20. }


Pour le changement d'année dans ce cas, pas de problème, le mois passera de 12 à 1 et le traitement se fera sans encombre.

La seule contrainte c'est que pour lancer le traitement il faut que la page soit appelée, c'est à dire que si tu gères un site avec peu de traffic, le traitement risque de sauter un ou plusieurs mois;

J'espère avoir aidé ou donné des idées à ceux qui cherchent des astuces :) 

Kroan
  • Commenter cette solution |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par boss183.
  • Commenter cette réponse |
Score
0
òh
òi
|
Pour être plus clair, j'ai utilisé ta technique avec ma table table_compteur avec juste un champ "valeur".
Et dans le code j'ai enlevé tout ce qui concernait la partie traitement et ça a l'air de fonctionner.

Mais je veux bien que tu m'expliques ce que tu voulais faire avec le champ type et traitement
  • Commenter cette réponse |
Score
0
òh
òi
|
Merci beaucoup Kroan !

Il y a juste un point que je ne suis pas sur de comprendre, c'est la partie :
"... WHERE type='traitement'..."

à quoi correspond traitement ??

Est-ce que je dois créer (par exemple) une table_compteur avec 2 champs : traitement et valeur ?

Si oui, je comprends pas trop ce que je dois mettre dans le champ traitement

Merci d'avance
  • Commenter cette réponse |
Score
0
òh
òi
|
Une tache cron est l'éxécution d'une tache (éxécution d'une page, d'une commande, d'un fichier ...) de façon automatique via les paramètre que tu lui aura indiqué lorsque tu ajouteras ta nouvelle tache cron.

http://fr.wikipedia.org/wiki/Cron
  • Commenter cette réponse |
Score
0
òh
òi
|
Je précise que pour l'instant, je travaille sous Windows avec XAMPP
  • Commenter cette réponse |
Score
0
òh
òi
|
Oui tu as raison, mais je comprends pas trop le fonctionnement d'une tache CRON, c'est quoi le principe ?

Merci
  • Commenter cette réponse |
Score
0
òh
òi
|
L'avantage d'une tache cron est qu'elle soit éxécuter automatiquement vu que c'est programmer via la date mois/min/heure/seconde que tu as paramétrer et que tu n'as pas à t'y préoccuper.

Dans ton cas précis, tu va devoir continuer à lancer ta page manuellement chaque jour ou une fois par mois suivant le nombre de fois que tu veux éxécuter ton script.
  • Commenter cette réponse |
Score
0
òh
òi
|
Merci pour ta réponse mais tout ça me parait un peu complexe pour mon petit script PHP ^^
Je pense que je vais plutôt récup la date du jour et faire des test et tout et tout pr faire mon truc.

Merci qd même
  • Commenter cette réponse |
Score
0
òh
òi
|
Bonjour,
Très simple, as tu la possibilité via ton hébergeur de faire des tache crôn ?
Si oui, c'est réglé, sinon :

- http://webcron.org/ par ex
- changer d'hebergeur qui accepte les tache cron.
- Si tu as un serveur dédié / vps / rps / et tout ce qui se fini en S, la question se pose pas tu tape "crontab" en ssh, et je te laisse google pour trouver les paramètre exact ;) 
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS