Partage
  • Partager sur Facebook
  • Partager sur Twitter

comment executer un script tout les heures

    3 mai 2011 à 11:57:24

    bonjour,

    je remercie lord casque noir pour le script
    SET @pstart = CAST( DATE_FORMAT( DATE_SUB( now(), INTERVAL 1 HOUR ), '%Y-%m-%d %H:00:00' ) AS DATETIME );
    SET @pend = DATE_ADD( @pstart, INTERVAL 1 HOUR );
    
    CREATE TEMPORARY TABLE t(
      user_id  INTEGER NOT NULL,
      clic_dt  DATETIME NOT NULL,
      clic_count INTEGER NOT NULL
    );
    
    BEGIN;
    
    INSERT INTO t SELECT user_id, min( clic_dt ), sum( clic_count ) 
    FROM clics
    WHERE clic_dt >= @pstart AND clic_dt < @pend
    GROUP BY user_id, DATE_FORMAT( clic_dt, '%Y-%m-%d %H:00:00' )
    FOR UPDATE;
    
    DELETE FROM clics WHERE clic_dt >= @pstart AND clic_dt < @pend;
    
    INSERT INTO clics SELECT * FROM t;
    
    COMMIT;
    
    DROP TABLE t;
    


    mais le soucis c'est que je n'arrive pas a l'executer sans intervenir
    j'ai bien regarder dans les Triggers mais j'y comprends rien

    pouvez m'aider merci
    • Partager sur Facebook
    • Partager sur Twitter
      3 mai 2011 à 13:02:22

      mais le lien que tu me donnes c'est pour MySQL 5.1 Manual

      mais moi je n'ai que 5,0 MySQL
      • Partager sur Facebook
      • Partager sur Twitter
        3 mai 2011 à 15:43:48

        Ah c'est ennuyeux. T'es sur un serveur mutualisé ?
        • Partager sur Facebook
        • Partager sur Twitter
          3 mai 2011 à 16:58:23

          oui d'ou tous mes soucis
          • Partager sur Facebook
          • Partager sur Twitter
            3 mai 2011 à 17:06:47

            T'as pas une option "tâches planifiées / cron" dans ton machin ? Il me semble qu'il y en a une chez ovh...
            • Partager sur Facebook
            • Partager sur Twitter
              3 mai 2011 à 17:24:51

              non ca n'hesite pas moi je suis chez phpnux.com

              je leur ai demander et ils m'ont dit que ce n'etait pas possible

              et ca m'ennuye de changer d'hebergeur car là je ne paye pas cher lol
              et de toute facon je ne s'aurais pas lequel choisir
              • Partager sur Facebook
              • Partager sur Twitter
                3 mai 2011 à 17:37:33

                Une solution c'est de le mettre dans tes pages en ne l'exécutant que si ça fait plus de x minutes que tu l'as pas exécuté. Mais il faut vérifier à chaque fois, c'est chiant.

                Sinon : http://www.webcron.org/online-cron
                • Partager sur Facebook
                • Partager sur Twitter
                  3 mai 2011 à 17:53:54

                  je preferais la premiere solution mais comment car j'ai essayer et je n'y suis pas arrive :(

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    3 mai 2011 à 20:10:47

                    Je ne sais pas si cela peut t'aider: (site d'un des membres du site du zéro ^^)

                    http://www.fox-infographie.com/ajax_lance_php.php
                    Avec ce système, tu vérifies simplement quand tu as exécuté le script pour la dernière fois.

                    Cela dit, je viserais plutôt des tâches CRON ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 mai 2011 à 10:09:25

                      bonjour

                      et si je peux modifier le code peut etre pour qu'au lieu de creer une ligne toute les minutes il en une toutes les 24h est-ce possible ??

                      sur cette ligne

                      DATE_FORMAT( now(), \'%Y-%m-%d %H:%i:00\' ), 1)
                      
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 mai 2011 à 10:22:24

                        Pour exécuter un script toutes les heures (le script du dessus est fait pour) tu peux faire ça :

                        - tu créé une table dans la bdd qui contient juste 1 colonne et 1 ligne qui contient le datetime de la prochaine exécution du script (CREATE TABLE script_dernier_temps( script_id INT PRIMARY KEY, next_dt DATETIME ))

                        - mettre 2 lignes dedans (pour le script horaire et le script quotidien)

                        - puis à chaque page (ou lance un random() pour le faire seulement 1 page sur 10...) tu fais "SELECT * FROM script_dernier_temps WHERE next_dt < now()" ça te retourne les scripts à exécuter

                        - après les avoir exécuté tu fais "UPDATE script_dernier_temps SET next_dt = now() + INTERVAL xxx HOURS" ce qui mémorise le moment de la prochaine exécution


                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 mai 2011 à 16:40:06

                          bon j'ai creer la table et preparer une partie de mon php
                          car je sais je suis bete mais est-ce que je peux le rajouter sur ma page qui enregistre les clics??

                          quand tu dis ""puis à chaque page (ou lance un random() pour le faire seulement 1 page sur 10...""

                          c'est quoi un random() j'ai chercher mais rien trouve?

                          et principale comment php va savoir que c'est xx.sql qu'il va falloir executer?

                          si je mets ca
                          $sql=file("fichier.sql");
                          
                          c'est valable ou pas

                          moi je nage dans incompréhension je suis completemet perdue.....
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            4 mai 2011 à 16:56:37

                            Citation : gribouille34

                            c'est quoi un random() j'ai chercher mais rien trouve?



                            <?php
                            $var=rand(1, 10); //$var vaudra entre 1 et 10 (inclus)
                            ?>
                            

                            • Partager sur Facebook
                            • Partager sur Twitter
                              4 mai 2011 à 17:04:57

                              ok <?php
                              $var=rand(1, 10); //$var vaudra entre 1 et 10 (inclus)
                              ?>

                              mais comment j' l'utiliser ce truc pour faire ca (puis à chaque page (ou lance un random() pour le faire seulement 1 page sur 10...")
                              car là pour moi c'est du petit chinois desolée mais je suis honete

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                4 mai 2011 à 17:11:37

                                Par exemple:

                                <?php
                                if(rand(1, 10)==1)
                                {
                                	//On exécute le script
                                }
                                else
                                {
                                	//On n'exécute pas le script
                                }
                                ?>
                                

                                Tu auras une chance sur 10 d'exécuter le script.

                                Après, comme je l'ai dis, ce genre de solution, je n'aime pas du tout, je viserais plutôt les tâches CRON ;)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  4 mai 2011 à 17:58:33

                                  Citation : Lord Casque Noir


                                  - tu créé une table dans la bdd qui contient juste 1 colonne et 1 ligne qui contient le datetime de la prochaine exécution du script (CREATE TABLE script_dernier_temps( script_id INT PRIMARY KEY, next_dt DATETIME )) ca j'ai fait

                                  - mettre 2 lignes dedans (pour le script horaire et le script quotidien) mais la je comprends pas

                                  - puis à chaque page (ou lance un random() pour le faire seulement 1 page sur 10...) tu fais "SELECT * FROM script_dernier_temps WHERE next_dt < now()" ça te retourne les scripts à exécuter

                                  - après les avoir exécuté tu fais "UPDATE script_dernier_temps SET next_dt = now() + INTERVAL xxx HOURS" ce qui mémorise le moment de la prochaine exécution




                                  bon là je suis sur http://www.webcron.org

                                  pour l'adresse de mon script je mets bien l'adresse de mon site http://;;;;;;;;;;;;;;;/x.sql
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  comment executer un script tout les heures

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown