 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| 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 |
|
| |
|