Newsgroup: it.comp.www.php
Titolo: Ottimizzazione del server

Salve a tutti.
Ho un sito in php appoggiato ad un database mysql.
Mi � arrivata una notifica dal mio webhost che mi comunicava un eccessivo
utilizzo delle risorse web, specificatamente per delle query complicate
presenti in alcune pagine del mio sito.
Come soluzione avrei pensato (e qui chiedo il vostro parere) di utilizzare
il servizio Cron Job per lanciare degli script php in cui con i comandi
file_get_contents e file_put_contents costruisco le pagina statiche che si
aggiornano quotidianamente, al fine di eseguire quelle query una volta sola
al giorno invece che ogniqualvolta il visitatore va su quelle pagine. Pu�
essere una soluzione accettabile? Sono pronto anche a ricevere insulti se ho
detto delle castronerie o delle banalit�, tutto serve per migliorare in
questo campo....
Grazie e un saluto
Leonardo

 questo campo....
tutto serve


 ogniqualvolta il visitatore va su quelle pagine.
ti basta aggiornare le pagine una volta al giorno?
usa un meccanismo di caching, senza scomodare cron e simili

 al giorno invece che ogniqualvolta il visitatore va su quelle pagine.
Io preferirei avere un cron job che memorizza i risultati delle query
pesanti in tabelle mysql "precotte" e fare select da quelle anzichč
generare staticamente l'intera pagina.
	Y.

 usa un meccanismo di caching, senza scomodare cron e simili
Grazie!!! Fino ad ieri non conoscevo nemmeno l'esistenza del caching,
gugolando un po' ho trovato la guida di mrwebmaster e l'ho implementato nel 
mio sito e mi pare funzionare abbastanza bene.
Grazie anche agli altri membri per tutti i consigli preziosi
Leo 



alleluja, qualcuno che non sa una cosa, gli dici che esiste , si sbatte a 
cercare cosa sia e come funziona, si sbatte a cercare di impararla da 
solo senza pensare di essere a ripetizioni da un professore privato.
avercene!!!
buona ricerca

 solo senza pensare di essere a ripetizioni da un professore privato.
grazie...ma ti smentisco subito perchè ti sto x chiedere un chiarimento sul 
codice che ho implementato...
L'ho preso come ti dicevo da una guida di mrwebmaster (c'e n'erano anche 
altre ma questa mi sembrava la più semplice) e consiste in 2 file da 
includere nelle pagine di cui si vuol fare caching, uno per vedere se c'e il 
file cache e l'altro per scriverlo nel caso contrario.
Il primo file è questo
*************PRIMO FILE************************
<?php
// Percorso della cartella in cui salvare i file temporanei
$cachedir = '/cache/';
// Durata massima (in minuti) delle pagine in cache
$time = 30;
// Pagine da NON salvare in cache
$no_cache = array(
  '
mrwebmaster.it/rss.php
',
  '
mrwebmaster.it/cerca.php
'
);
// variabile interna di controllo
$no_pagina = false;
// Recupero la URL completa della pagina corrente
$pagina = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// costruisco il percorso fisico del file temporaneo
$cachefile = $cachedir . md5($pagina) . '.html';
// Verifico che la pagina corrente non sia tra quelle da NON salvare in 
cache
for ($i = 0; $i < count($no_cache); $i++)
{
  // Se la pagina corrente è tra quelle da escludere la variabile
  // $no_pagina viene impostata come true (bloccando il sistema di caching)
  if (strpos($pagina, $no_cache[$i]) !== false) $no_pagina = true;
}
// Se esiste il file di cache per la pagina corrente (e questa non è tra 
quelle escluse)
// verifico qual'è il time di creazione e lo memorizzo nella variabile 
$cache_created
$cache_created = ((file_exists($cachefile)) && ($no_pagina === false)) ? 
filemtime($cachefile) : 0;
// Verifico che la pagina temporanea non sia scaduta
if ((time() - ($time * 60)) < $cache_created)
{
  // se la pagina in cache non è troppo vecchia la leggo ed interrompo 
l'esecuzione dello script
  readfile($cachefile);
  exit();
}
ob_start();
?>
****************QUESTO IL SECONDO FILE**************************
<?php
if ($no_pagina === false)
{
  // apriamo il file della cache in scrittura
  $file = fopen($cachefile, 'w');
  // salviamo il contenuto dell'output buffer nel file
  fwrite($file, ob_get_contents());
  // chiudiamo il file
  fclose($file);
}
// inviamo l'output al browser
ob_end_flush();
?>
la cosa che non ho capito (comunque funziona) è questa: viene creato un file 
cache con un nome univoco, tipo 051f3c3f9aa93d8888023957fe5d09c1.html. della 
pagina pincopallo.php (perchè non c'era o era scaduto).
Quando io vado a richiamare la pagina pincopallo.php, il codice come cacchio 
fa a sapere che nel file 051f3c3f9aa93d8888023957fe5d09c1.html è cachata 
pincopallo.php??