IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

cache qui bug


Sujet :

Langage PHP

  1. #1
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut cache qui bug
    bonjour tous le monde!

    alors 'oilou, je comprends pas pourquoi mon cache bug : en effet, j'affiche un resultat de requete dans mon cache, et la premiere fois que je charge la page, y'a pas de probleme, ca m'affiche bien le resultat de ma requete, mais des que je recharge la page, ca m'affiche les resultats de ma requete + le mot 'Array' qui s'intercale.....

    une p'tite idee les gars?


    mon code pour aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?php
    function create_cache($nom_cache, $contenu)
    {
            // utilisation de serialize() pour transformer $content en chaine de caractères
            $contenu = serialize($contenu);
     
            // échappement les caractères spéciaux pour pouvoir mettre le tout entre quotes dans le futur fichier
            $contenu = str_replace(array('', '\'', "0"), array('\\', '\'', '0'), $contenu);
     
            // création du code php à stocker dans le fichier
             $contenu = 'ee'. unserialize('' .  $contenu . '');
     
     
            // écriture du code dans le fichier
            $fichier = fopen('./cache/donnees_' . $nom_cache . '.php', 'w');
            $resultat = fwrite($fichier, $contenu);
            fclose($fichier);
     
            // renvoie true si l'écriture du fichier a réussi
            return $resultat;
    }
     
    function get_cache($nom_cache)
    {
            // vérifie que le fichier de cache existe
            if ( is_file('./cache/donnees_' . $nom_cache . '.php') )
            {
                    // le fichier existe, on l'exécute puis on retourne le contenu de $cache
                    include('./cache/donnees_' . $nom_cache . '.php');
                    return $cache;
            }
            else
            {
                    // le fichier de cache n'existe pas, on retourne false
                    return false;
            }
    }
     
     
     
    mysql_connect("localhost","root","");
    mysql_select_db("warrior");
    if ( !$donnees = get_cache('essai') )
    {
     
            // le cache n'existe pas, récupération des messages dans la base de données
            $resultat = mysql_query('SELECT * FROM jos_users ');
     
            // stockage du résultat dans la variable $donnees
            $donnees = array('esdsds'=>'ee','a'=>'eea');
                   // mise en cache de $donnees
            create_cache('essai', $donnees);
    }
     
    // lecture des messages
    foreach ( $donnees as $ligne)
    {
    echo $ligne.'<br>';
            //
            // on affiche les messages
            //
    }
    'oilou les gens, si quelqu un sait comment m'aider siouplais, mercii
    fan de Dune et de Monkey Island ? venez voir mon jeu point and click du style du jeu DUNE sorti en 1992 ! DUNE - Moneo au service de l'Empereur-dieu

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 099
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 099
    Points : 8 208
    Points
    8 208
    Billets dans le blog
    17
    Par défaut
    Salut !
    Il y a qques lignes de script qui m'ont l'air suspectes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // échappement les caractères spéciaux pour pouvoir mettre le tout entre quotes dans le futur fichier
    $contenu = str_replace(array('', '\'', "0"), array('\\', '\'', '0'), $contenu);
    Je doute que ce soit utile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // création du code php à stocker dans le fichier
    $contenu = 'ee'. unserialize('' .  $contenu . '');
    Pourquoi délinéariser la variable ? Pourquoi lui concaténer "ee" ? Ceci est sûrement à l'origine du "Array" qui apparaît.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = fwrite($fichier, $contenu);
    Ici ça revient à faire, au mieux, ce qui suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = fwrite($fichier, array(123, 234)) ;
    ... ce qui n'écrira pas le contenu du tableau dans le fichier mais "Array".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include('./cache/donnees_' . $nom_cache . '.php');
    return $cache;
    Pourquoi faire un include ?
    Que vaut $cache ? Rien si je ne me trompe.

    Essaie comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function create_cache($nom_cache, $contenu)
    {
        file_put_contents('./cache/donnees_' . $nom_cache . '.php',
                          serialize($contenu));
    }
     
    function get_cache($nom_cache)
    {
        $cache = './cache/donnees_' . $nom_cache . '.php' ;
        if ( is_file($cache) ) {
            return unserialize(file_get_contents($cache)) ;
        }
        return FALSE ;
    }
    (non testé)
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    oué, je crois bien que c'est tout bon!



    merci merci!!!

    fan de Dune et de Monkey Island ? venez voir mon jeu point and click du style du jeu DUNE sorti en 1992 ! DUNE - Moneo au service de l'Empereur-dieu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH 8] moviecliploader et préload qui bug
    Par Twist dans le forum Flash
    Réponses: 5
    Dernier message: 23/01/2007, 16h27
  2. innerHTML qui bug sous IE
    Par krolineeee dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/06/2006, 16h28
  3. [Ouverture fichier] Chemin qui bug !
    Par nebule dans le forum Langage
    Réponses: 15
    Dernier message: 18/05/2006, 09h59
  4. [2.0] Get sur une variable d'application qui bug ??
    Par brousaille dans le forum ASP.NET
    Réponses: 8
    Dernier message: 14/03/2006, 05h08
  5. [RCP]tuto Ibm qui bug
    Par sglug dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 03/10/2005, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo