Mise en cache d'une sortie mysql

WRInaute discret
salut a tous,
voilà, je cherche a mettre le maximum de scripts php en cache sur mon site pour réduire la charge,
ainsi, j'avais avant un script php qui selectionne 5 pages au hasard de mon site, cela afin de mieux "interconnecter" mes pages.

donc j'avais uen requete :
Code:
SELECT * FROM `pages` ORDER BY RAND() LIMIT 0,5

je souhaite enlever cette requete et la remplacer par un cache pour chaque page de mon site, c'est à dire un fichier cache-id1-id2.html avec id1 et id2 qui identifient la page.

j'ai donc voulu faire un algo qui n'utilise pas la fonction rand, mais qui equilibre le nombre de liens que reçoit une page, j'ai donc créer une page liens de cette architecture :
Code:
CREATE TABLE `liens` (
  `url` varchar(255) NOT NULL,
  `titre` varchar(255) NOT NULL,
  `nombre` decimal(5,0) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Et j'ai pensé à cet algo, que j'avais d'ailleurs mis en forme pour mettre en cache un autre script qui ne sortait qu'une ligne. Je récupérais donc la sortie avec ob_start/ob_get_contents et je l'écrivais dans le fichier cache, mais là comme il y a plusieurs lignes ca ne fonctionne pas et je me retrouve coincé pour faire ma requete update
bref, voilà l'algo
Code:
SI le fichier cache existe
    {  SI le fichier est vide
            { $sql='SELECT * FROM `liens` ORDER BY `nombre` LIMIT 0,4';
              Mise en cache de la sortie dans /home/web/site/cache/cache-id1-id2.html
              $sql2='UPDATE liens SET nombre=nombre+1 WHERE url='$url';
            }
       SINON 
            { echo fichier cache
    }
SINON
    {   $sql='SELECT * FROM `liens` ORDER BY `nombre` LIMIT 0,4';
        Mise en cache de la sortie dans /home/web/site/cache/cache-id1-id2.html
        $sql2='UPDATE liens SET nombre=nombre+1 WHERE url='$url';
    }

mais comment le mettre en formle pour éviter les problèmes précédemments cités?

merci d'avance

doom
 
Discussions similaires
Haut