Newsgroup: it.comp.www.php
Titolo: come misuro la velocità dei php?

Ho un server con php3 e php4 che funzionano come cgi, apache 1.3.17 e
winNT.
Da qualche tempo noto un rallentamento e cerco di capire a che č dovuto,
ma non riesco a cavarne nulla.
Il tempo di esecuzione di una pagina con PHP puņ essere ottenuto
mettendo del codice che segni il tempo all'inizio ed alla fine e quindi
calcolando la differenza?
Ho fatto la prova e visto che per una stessa pagina (diversi include,
connessione a db mysql) i tempi sono dell'ordine di:
php3 0.200 ms
php4 0.51 ms
php4 come modulo 0.06ms (ma tremendamente instabile, l'ho tolto xchč
inchioda apache)
Nonostante i tempi relativamente bassi, se mi connetto dall'esterno i
tempi diventano 5-6 secondi!!!
Mi connetto con access server sulla stessa LAN del server con ISDN 128k;
il file č si e no di 3k;
Domande:
a) chi cavolo va a prendersi tutti quei secondi?
b) Qualcuno conosce qualche tool (semplice) per misurare le prestazioni
del server?
c) Qualcuno ha uno schema esatto per capire cosa succede dal meno in cui
faccio click sul client al momento in cui č finita la risposta?
d) La funzione flush() puņ aiutarmi?
Grazie ragazzi.

 ^_^
@ <snip>
@ Da qualche tempo noto un rallentamento e cerco di capire a che ่ dovuto,
@ ma non riesco a cavarne nulla.
I rallentamenti sono dovuti:
- Utilizzo di processore da parte di altri servizi (DB, drivers,
periferiche, ecc)
- Colli di bottiglia nella rete (un ftp che 'succhia' quasi tutta la
banda disponibile nel tratto dove passa anche il web server, ad esempio)
- Client usato in una rete molto limitata, magari con capacita' di
300bps
- Stai usando Windows [ scherzo ;) ]
@ Il tempo di esecuzione di una pagina con PHP pu๒ essere ottenuto
@ mettendo del codice che segni il tempo all'inizio ed alla fine e quindi
@ calcolando la differenza? <snip>
Cosi' e' giusto, ma non ti dira' nulla sulla performance del server. Se
il browser e' lento a caricare, il server spedira' di conseguenza,
quindi una pagina la puoi caricare in 6ms oppure in 6000ms. Il server
non ne ha colpa.
Se vuoi monitorare la -reale- differenza di performance tra php3 e php4,
dovresti:
- usare la STESSA pagina di test, con codice di test php che sia
identico, ovvero supportato da entrambe le versioni
- contare i cicli di clock usati da php3 e php4 per gestire la pagina
- essere in un ambiente controllato, meglio se fai i test su di una
macchina stand-alone non cossessa alla rete, e soprattutto senza inutili
(per il test) servizi attivi.
Converrai che se fai i test mentre uno usa la stampante di rete,
un'altro gira su internet, e un altro ancora scarica files con ftp,
sara' difficile avere risultati affidabili ;)
Andrea

Grazie Andrea.
La macchina ่ su rete in hosting; come faccio a contare i cicli di clock?


calcolando la differenza?
Fai cosi':
a) Attiva il buffering;
b) Metti QUATTRO checkpoints:
	print "<!-- Process begins -->";
	print "<!-- Process stops, elapsed: $ms -->";
	ob_scrivi_tutto_e_vai_a_casa();
	print "<!-- Browser process end, elapsed: $ms -->";
	flush();
	print "<!-- Shutdown, elapsed: $ms -->";
 
Il primo tempo ti dice quanto ha impiegato il server. Il secondo quanto
ci ha messo Apache, la rete (uhm!) eccetera; il terzo quasi soltanto il
tempo impiegato dal browser remoto.
Leonardo
-- 
".signature": bad command or file name

Grazie Leonardo.
Proverň a farlo. Mi puo spiegare bene cosa vuol dire attivare il buffering e
a cosa serve il flush()?
Grazie ancora.


a cosa serve il flush()?
Per entrambe le cose, ti rimando alla documentazione; la spiegazione
del buffering la trovi alla funzione ob_start(), mi sembra.
