Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

exista folosesti vreun sistem de cache?
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
redcom



Data înscrierii: 27/Mai/2004
Mesaje: 114
Locație: iasi

Trimis: Dum Dec 11, 2005 6:14 pm    Titlul subiectului: exista folosesti vreun sistem de cache?  

salve
are cineva citeva hint-uri? ceva legat sau poate putina rabdare de a explica o/sau mai multe modalitati de a face cache la paginile servite de un server ?
paginile sunt dinamice fac selectii intensive la o baza de date, nu as vrea sa imi omor serverul daca pot face cache la acele queryul. cum asa putea sa fac asta?
Sus  
punctweb



Data înscrierii: 24/Mar/2004
Mesaje: 507

Trimis: Dum Dec 11, 2005 9:24 pm    Titlul subiectului:  

Cod:
   
$id_stire = $_GET['stire'];
/* stabilim fisierul care va fi general intr-un final utilizatorului */
    $fisier_cache = "cache/stiri/stire_".$id_stire.".html";
    /* Stabilim durata de viata a cache-ului */
    $viata_cache = 60 * 60; // 1 ora
    /* Daca cache-ul n-a expirat, trimitem utilizatorul direct la pagina statica */
    if(file_exists($fisier_cache) && (time() - $viata_cache < @filemtime($fisier_cache))) {
        header("location: ".S_URL."cache/stiri/stire_".$id_stire.".html");
        exit;
        ob_end_clean();
    } else {
        /* Apelam scriptul care genereaza, de fapt, stirea */
        $citeste = @fopen(S_URL."index.php?pagina=(stiri)&vizualizeaza=".$id_stire, "r");
       
        if(!$citeste) {
            header("location: ".S_URL."index".S_EXT."pagina=(stiri)&vizualizeaza=".$id_stire);
            exit;
            ob_end_clean();
        }
       
        $html = "";
        /* Obtinem liniile (continutul efectiv) al stirii */
        while($linie = @fgets($citeste, 256)) {
            $html .= $linie;
        }
        @fclose($citeste);
        clearstatcache();
        /* Generam fisierul html pentru stirea respectiva*/
        $scrie = @fopen("cache/stiri/stire_".$id_stire.".html", "w+");
       
        if(!$scrie) {
            header("location: ".S_URL."index".S_EXT."pagina=(stiri)&vizualizeaza=".$id_stire);
            exit;
            ob_end_clean();
        }
        /* Blocam fisierul pentru scriere
        Pentru versiunile PHP mai mici de 4.0.1 schimba LOCK_EX in 2 */
        if(!flock($scrie, LOCK_EX+LOCK_NB)) {
            header("location: ".S_URL."index".S_EXT."pagina=(stiri)&vizualizeaza=".$id_stire);
            exit;
            ob_end_clean();
        }
        /* Scriem continutul fisierului */
        @fwrite($scrie, $html, strlen($html));
        /* Deblocam fiserul
        Pentru versiunile PHP mai mici de 4.0.1 schimba LOCK_EX in 3 */
        @flock($scrie, LOCK_UN);
       
        @fclose($scrie);
        /* Trimitem utilizatorul la pagina generata in cache */
        header("location: ".S_URL."cache/stiri/stire_".$id_stire.".html");
        exit;
        ob_end_clean();
    }


modifica url-urile, adaptandu-le pt nevoile tale.
$id_stire este ID-ul stirii generata dinamic

daca nu te descurci revino pentru detalii
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community