Newsgroup: it.comp.www.php
Titolo: velocizzare sito in php e mysql

Ciao a tutti, il mio sito negli ultimi tempi a causa di un incremento di 
query del dbase, di 'if..else' nello script principale, e di righe nel 
file del mod_rewrite è diventato un po' lento. Sto cercando di 
ottimizzare le pagine usando delle funzioni e il comando switch ove 
possibile per evitare di ripetere righe e 'IF' inutili, per il database 
sto  indicizzando le tabelle più usate. Avete altri suggerimenti?
Ho letto che potrebbe essere utile abilitare i meta tag della cache?
Che ne pensate?
Grazie mille.

 ha scritto nel messaggio
news:46d6ca40$0$17945$4faf...@reader1.news.tin.it...

Dipende anche dall' hardware che usi.
attento agli indici ed alle query con i join ed aumenta la cache delle query
-- 
«·  I miei due cents  ·»

sto  indicizzando le tabelle piů usate. Avete altri suggerimenti?
Vedi se hai qualche query lenta, il cui output finale in HTML e' fisso o
cambia molto lentamente. *Se* e' cosi' ti puo' convenire salvarla dentro
dei file di appoggio, per servirli con readfile() o file_get_contents().
Anche, prova a vedere se puoi accorpare piu' query (estraendo cioe' piu'
informazioni in una sola mandata), e/o salvarne i risultati in sessione.
Verifica di stare sfruttando al meglio l'output buffering, e considera i
vantaggi e gli svantaggi di ob_gzhandler.
Prova a modularizzare lo script principale a colpi di
	if (...)
	{
		include 'moduloXXX.php';
	}
...cosi' in astratto e' difficile dare altri consigli...
Leonardo
-- 
 What do you make, so fair and bright;
 What do you build with sails for flight;
 What do you weave with wool so white?

spino ha scritto:

Vi ringrazio entrambi per le risposte. Il problema delle queries è 
legato più alla quantità che alla qualità. Non vi sono infatti righe 
particolarmente laboriose proprio perchè non sono un esperto di mysql e 
so il minimo indispensabile per quello che mi interessa ottenere...
Non ho mai modificato la cache della query, è un operazione fattibile 
solo modificando i file di configurazione del server? O posso agire 
anche nello script?
Nel primo caso il provider non me lo permetterebbe e dovrei richiamare 
la funzione con apposite righe dallo script principale(come faccio per 
il php.ini). Che valore inoltre mi suggerisci/te per la cache?
Un paio di queries che suppongo mi rallentino la home sono come questa:
$chkup="SELECT 
IF((UNIX_TIMESTAMP(datainserimento)-UNIX_TIMESTAMP()>-172800 AND 
UNIX_TIMESTAMP(datainserimento)-UNIX_TIMESTAMP()<86400),1,0) FROM news";
praticamente se la notizia è nuova nelle ore a seguire all'inserimento 
mi fa lampeggiare un'iconcina (il codice a seguire comprende infatti 
l'IF relativo).
Come detto so il minimo indispensabile di mysql e magari la riga di 
sopra è 'goffa' per i più esperti. Pertanto ne approfitto per chiedervi 
-se puo' essere per voi tra le cause di rallentamento- e se esisterebbe 
una variante leggibile più velocemente dal client.
Ancora grazie.

 UNIX_TIMESTAMP(datainserimento)-UNIX_TIMESTAMP()<86400),1,0) FROM news";
Visto che usi le timestamp unix invece delle date SQL, perche` non 
memorizzi direttamente nel DB le timestamp in un campo int4 (io uso int8 
in postgres) e ti risparmi i vari unix_timestamp() ?
Inoltre, al posto dell'if puoi usare le where, che credo (CREDO) siano 
meglio ottimizzate.
Un indice su datainserimento dovrebbe poi darti ancora qualche "botta" di 
prestazioni.
Bye.

Un paio di queries che suppongo mi rallentino la home sono come questa:
Supponi... prova a cronometrarle. Metti nel codice HTML roba come
	$chkup = roba varia
	print "<!-- \nCHRONO inizio query Alpha: ".microtime()."\n -->";
	SQLExec($chkup);
	print "<!-- \nCHRONO fine query Alpha: ".microtime()."\n -->";
	...
	print "<!-- \nCHRONO inizio query Bravo: ".microtime()."\n -->";
	...
...poi alla fine recuperi tutte le righe incriminate, fai due conti e
decidi.
Se no rischi di dannarti l'anima per spremere DUE millisecondi, e poi
un'altra query che non avresti detto mai te ne sta puppando dueMILA.
Leonardo BTDTGTTS
