Partage
  • Partager sur Facebook
  • Partager sur Twitter

Actualiser un include une fois par jour à minuit

    10 juillet 2019 à 16:34:59

    Bonjour,

    Il y a une rubrique "lexique" dans l'un de mes sites ; dans cette rubrique il y a un "mot du jour" que je souhaite actualiser quotidiennement selon ma base de mots déjà en place. Pour faire bref, je parviens à sélectionner aléatoirement mon mot, mais je ne parviens pas à exécuter cette tâche une fois par jour seulement.

    En effet, le mot change à chaque fois que la page est actualisée. J'ai cherché du côté des tâches cron mais j'ai sans doute du mal à la paramétrer. Je pense que pour répondre à mon problème, il faudrait que je parvienne à réaliser / obtenir un script qui ne suit pas une boucle.

    Actuellement j'include cela :

    <?php
        $RandomList = array();
        $RandomList[] = "/inc/mot-du-jour/a.php";
        $RandomList[] = "/inc/mot-du-jour/b.php";
        ...
        $RandomList[] = "/inc/mot-du-jour/z.php";
        readfile($_SERVER['DOCUMENT_ROOT'].$RandomList[rand(0, count($RandomList)-1)]);
    ?>



    -
    Edité par GuiLlaume27 10 juillet 2019 à 16:35:20

    • Partager sur Facebook
    • Partager sur Twitter
      10 juillet 2019 à 16:57:06

      Bonjour,

      Mais quel est l'intérêt de faire un tachecron pour ça ? Autant le faire à l'affichage du premier visiteur sur le site le jour X ? 

      • Partager sur Facebook
      • Partager sur Twitter
        10 juillet 2019 à 16:58:44

        Bonjour.

        Il te faut penser autrement, car avoir plusieurs fichiers php dans lesquels tu y stockes des mots et lire aléatoirement un de ces fichiers pour récupérer un mot, c'est loin d'être maintenable et évolutif, car d'après ton exemple, tu aurais environ 16 fichiers php, donc chacun d'entre eux contient les mots commençant par une lettre de l'alphabet.

        Utilises plutôt un système plus dynamique pour les ajouts/modifications/suppressions des données et leur lecture pour la récupération d'un seul mot.

        De plus qu'en l'état, tu peux te retrouver avec un même mot utilisé au moins deux fois.

        Alors qu'en passant par exemple par une base de données, lorsque tu récupères un enregistrement, tu pourrais assigner une valeur à l'une de ses colonnes pour indiquer par exemple que l'enregistrement est utilisé, par conséquent qu'il ne devra plus pouvoir être sélectionner les fois suivantes.

        Je donnes l'exemple d'une base de données, mais ça pourrait très bien être dans un fichier, par exemple un csv, json, etc.

        -
        Edité par Lartak 10 juillet 2019 à 17:18:37

        • Partager sur Facebook
        • Partager sur Twitter

        Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

          10 juillet 2019 à 17:04:11

          Kévin Brissez a écrit:

          Bonjour,

          Mais quel est l'intérêt de faire un tachecron pour ça ? Autant le faire à l'affichage du premier visiteur sur le site le jour X ? 


          C'est une alternative qui peut fonctionner, mais je me suis battu avec les fonctions time() et date() en vain... haha

          Tu aurais peut-être une piste pour m'orienter?

          • Partager sur Facebook
          • Partager sur Twitter
            10 juillet 2019 à 17:08:19

            Bah moi perso, après je sais pas si c'est la bonne solution loin de la, j'aurais par exemple une table "mots" avec dedans un champ id, mots, selected, puis chaque jours (via le temps), j'aurais fais une requête qui liste les mots et qui en choisis un de façon aléatoire en mettant le selected à 1 dans le champ du mot et je l'aurais afficher ensuite en faisant une requête Where selected = 1, puis au changement de date j'aurais refais une selection en retirant le mot précédent et pour pas tomber sur le même mot le lendemain j'aurais fais "Si c'est différent du mot $MaVariableMotPrecedent" par exemple,

            Je sais que c'est flou en espérant que tu puisse comprendre

            • Partager sur Facebook
            • Partager sur Twitter
              10 juillet 2019 à 17:14:58

              Je vois ce que tu veux dire, ta solution marcherait mais je suis persuadé qu'il y a plus simple. Avec ta solution, je suis obligé de rentrer dans ma BDD tous mes mots + chaque nouveau mot, et faire des requêtes SQL pour un truc si peu important... J'y songerai si on ne me propose aucune autre alternative ! merci :)

              • Partager sur Facebook
              • Partager sur Twitter
                10 juillet 2019 à 17:45:24

                Bah de base tes mots sont stockés où ?
                • Partager sur Facebook
                • Partager sur Twitter
                  10 juillet 2019 à 17:55:45

                  Mes mots + définition sont sur différents .php, j'ai honte, j'en ai tellement... Haha

                  Je pense que comme tu l'as dit, et comme Lartak l'a dit également je devrais tout stocker dans la BDD, même si ça risque de me prendre une plombe ! :(

                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 juillet 2019 à 18:00:28

                    Je serais quand même assez curieux de savoir comment tu as stocké les mots dans un fichier PHP.

                    Vu que tu utilises la fonction readfile, ça m'étonnerait que tu les aies stocké sous forme de tableau.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                      10 juillet 2019 à 18:05:14

                      Lartak a écrit:

                      Je serais quand même assez curieux de savoir comment tu as stocké les mots dans un fichier PHP.

                      Vu que tu utilises la fonction readfile, ça m'étonnerait que tu les aies stocké sous forme de tableau.


                      J'ai dû mal m'exprimer. La fonction readfile va chercher des .php avec le code .html de chaque mot
                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 juillet 2019 à 18:08:14

                        Donc, chaque fichier PHP ne contient que du HTML et correspond à un seul mot et sa définition ?
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                          10 juillet 2019 à 18:10:39

                          Oui, j'ai peur de me faire taper sur les doigts.

                          En soi, je pourrais leur donner l'extension .html, mais j'ai pris l'habitude du .php, et il n'est pas exclu que j'ajoute du php dans ces fichiers-là.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 juillet 2019 à 12:07:14

                            Re !

                            Après quelques jours, j'ai finalement rentré tous mes mots dans une BDD SQL. Voici la forme des variables

                            ID (auto-incrément)

                            Rand_ID 

                            Mot

                            Définition

                            J'ai Rand_ID = 0 pour tous mes mots, et je souhaiterais qu'une fois par jour, il passe à 1 pour un seul mot, et que le lendemain il passe à 2 pour le mot qui était égal à 1 la veille. Auriez-vous de quoi me guider ?

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Actualiser un include une fois par jour à minuit

                            × 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