PHP : Faire un évènement une fois par mois

Résolu/Fermé
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 - 2 mai 2011 à 14:50
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 - 4 mai 2011 à 17:19
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
A voir également:

8 réponses

Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
2 mai 2011 à 15:03
Bonjour,

un batch?

un petit .bat ou .cmd qui lance ta page en tache planifiée tous les mois?
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
2 mai 2011 à 15:14
Euh ... je ne connais pas trop ça.

Comment je peux faire ça ?
0
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
2 mai 2011 à 15:19
et bien je vais te donner un exemple.

si tu as php installé via wamp sur du windows.

donc tu crée un fichier .bat ou tu écrit:

echo off
C:\wamp\bin\php\php5.3.5\php.exe "C:\wamp\www\test\test.php"


lorsque tu vas double cliquer sur ce fichier de commande ca va executer ta page php test.php

ensuite tu crée une tache planifiée qui lance ce fichier une fois par mois.

voila ^^
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
2 mai 2011 à 15:56
AH ok je comprends, le problème c'est que j'aurais voulu intégrer cette actualisation à l'application, parce que si j'ai bien compris, tous les gens qui vont utiliser mon appli PHP doivent créer une tache planifiée et ça c'est pas trop ce que je recherche.

Je pense que je vais récup le jour avec la fonction date et avec des des test je pense que je pourrais m'en sortir.$


Merci quand même !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
2 mai 2011 à 16:03
je sais pas trop si c'est moi qui ai pas tout bien compris mais meme si tu récupère avec la fonction date et tout et tout comment tu vas regarder en permanence si on a changé de mois??

qu'est ce qui va faire que tu vas passer dans tes test sur la date et tout?

0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
2 mai 2011 à 16:09
sinon, peut être que ton hébergeur prend en charge les crons ?

http://doc.ubuntu-fr.org/cron

sinon, tu peux faire une page PHP qui va lire en BDD pour savoir si l'action a été effectuée ce mois ci, sinon l'effectuer et le noter en BDD :)
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
2 mai 2011 à 16:17
pour l'instant il n'y a pas d'hébergeur.

Sinon ton autre solution m'intéresse, comment faire pour aller voir en BDD si l'action a été effectué ce mois-ci ?

Merci
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
2 mai 2011 à 16:22
tu récupère le mois et l'année avec la fonction date(), tu vérifie si la valeur obtenue est dans la BDD, si oui, tu ne fais rien, sinon, tu effectue ta tache, puis tu marque la valeur de la date dans la BDD
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
2 mai 2011 à 16:28
Je comprend ton raisonnement mais je ne vois pas comment récupérer la date de l'insertion de données dans la BDD ??
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
2 mai 2011 à 16:32
je cause pas très bien BDD, mais jette un oeil ici :

http://www.infos-du-net.com/forum/277626-21-aller-chercher-valeur-base-donnees-comparer
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
2 mai 2011 à 16:52
ah non mais récupérer une info de la BDD et l'exploiter là il y a pas de soucis, ça je le fais déjà. Sauf que toi tu me parles d'une page qui va voir si l'action a été enregistrée ce mois-ci , mais j'ai pas l'impression que la date d'insertion dans la bdd soit conservée.
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
2 mai 2011 à 17:11
non, tu insert ta propre variable de date dans ta BDD

tu génère le mois et l'année dans une variable
tu compare ta variable aux entrées de la BDD
si l'entrée existe, tu ne fais rien
si elle n'existe pas, tu lance ton script et tu marque ta variable date dans la BDD
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
4 mai 2011 à 17:19
    // Le principe est de stocker le mois/ la semaine ou le jour où le traitement a été lancé;
    $test = mysql_query("select valeur from table_compteur where type='traitement' limit 1" ); // Ici j'utilise une table fictive
    if(mysql_num_rows($test)>0) {
        $mois = mysql_fetch_array($test); // Je récupère les infos de ma table
        if($mois['valeur']==date("m" )){ // Si la valeur stockée est égale au mois en cours...
            // ça veut dire que le traitement a déjà été fait, donc je ne fais rien.
        }
        else{ // Sinon, c'est que le mois en cours est passé !
            // Je peux donc effectuer mon traitement à la suite
            // [...]
            // IMPORTANT ! Il ne faut pas oublier de mettre à jour la valeur dans la table pour éviter que le traitement soit effectué plusieurs fois.
            mysql_query("update table_compteur set valeur='".date("m" )."' where type='traitement' " );
            // Hé voilà!
        }
    }
    else {// Si l'entrée n'existe pas dans la table, je la créée en y insérant le mois en cours;
        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é.
    }



Voilà ce que j'ai fait du coup et ça marche pas mal
0