[php] extra statistieken bij iedere pagina (aantal query's)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 17-09 22:48
Op een paar pagina's ben ik een regel zoals bijvoorbeeld het volgende wel eens tegengekomen :
code:
1
PHP 0,1692s : DB 0,1290s : 10 queries : 146 users : Load 1.06

Nu vroeg ik me af hoe je zoiets kan maken, het aantal users en de load is vrij makkelijk, maar de rest heb ik eigenlijk niet echt een idee over.
Ik heb gisteren google er ff bijgepakt, nu blijkt dat er een VBulletin (of hoe schrijf je da) mod voor is, maar ik heb natuurlijk geen VBulletin forum draaien, en dus ook geen lecensie voor dat programma.
Dus ik kan met geen mogelijkheid de code downloaden die bij de mod hoort omdat ze dan eerst een geldige serial van je willen.
Nu ben ik niet op zoek naar iemand die dit wel voor me kan, want dan is het helemaal geen uitdaging meer.
Ik wil het graag zelf maken en gaan gebruiken in een site waar ik op dit moment aan bezig ben, maar kan iemand mij misschien in de goeie richting schoppen ?

Op dit moment heb ik op die site al een parsetime meter die de volgende code gebruikt (als eerste regels) :
PHP:
1
2
3
4
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$starttime = $mtime;

En onderin :
PHP:
1
2
3
4
5
6
7
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$totaltime = ($endtime - $starttime);

echo "Pagina gemaakt in: ". round($totaltime,5) ." seconden.\n";


Maar hoe kan ik de rest van de gegevens die ik er graag in wil hebben berekenen ?

sebsoft.nl


Acties:
  • 0 Henk 'm!

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 07-11-2023

kvdveer

Z.O.Z.

Als je een databaseklasse hebt is het niet zo lastig, dan voer je gewoon bij iedere query een optelling uit.
Zonder databaseklasse denk ik niet dat het mogelijk is.

Localhost, sweet localhost


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

kvdveer schreef op 31 July 2003 @ 11:29:
Als je een databaseklasse hebt is het niet zo lastig, dan voer je gewoon bij iedere query een optelling uit.
Zonder databaseklasse denk ik niet dat het mogelijk is.
mja dan kan je wel bij elke query een counter incrementen, moet je er echter geen een veranderen ;)

Acties:
  • 0 Henk 'm!

Verwijderd

aantal query's kun je zo bijv. tellen:
PHP:
1
2
3
4
5
6
7
$mysql_queries = 0; 
function mysql_query_count($query) 
{ 
    global $mysql_queries; 
    $mysql_queries++; 
    return mysql_query($query); 
}

Dan noem je elke query mysql_query_count() en onderaan zet je echo $mysql_queries;

Acties:
  • 0 Henk 'm!

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 17-09 22:48
Verwijderd schreef op 31 juli 2003 @ 11:34:
aantal query's kun je zo bijv. tellen:
PHP:
1
2
3
4
5
6
7
$mysql_queries = 0; 
function mysql_query_count($query) 
{ 
    global $mysql_queries; 
    $mysql_queries++; 
    return mysql_query($query); 
}

Dan noem je elke query mysql_query_count() en onderaan zet je echo $mysql_queries;
Dit is inderdaad wel een aardig idee, maar ik heb de query's die ik gebruik al in een paar functies staan, al dan nog niet allemaal.
Op dit moment heb ik jou functie gebruikt en overal in die functies de aanroep ernaar toegevoegd, om dit op de individuele plaatsen ook nog te doen waar het nodig was, dit is de code die ik van jou gebruikt heb :
PHP:
1
$mysql_queries = 0;

Die staat in mijn config.php, die op iedere pagina als eerste wordt aangeroepen na de <?PHP...
Dan heb ik hetvolgende in mijn functions.php gezet :
PHP:
1
2
3
4
5
function mysql_query_count($query) 
{ 
    global $mysql_queries; 
    $mysql_queries++; 
}


Het was trouwens wel even schrikken, ik wist dat ik op sommige plaatsen veel query's gebruikte, maar niet zoveel :D
12 tot 24 query's voor een pagina tot nu toe (met dank aan vooral de smilieparser die volledig vanuit de database werkt en bij ieder tekstblok wordt aangeroepen ongeveer).

Nu ga ik er eens over denken hoe ik het beste die query time en die php generator time uit kunnen rekenen...
Ik liep te denken bij iedere query het aantal ms dat nodig is voor het ding bij elkaar in een variabele te zetten en dit af te trekken van het totale aantal ms dat nodig is voor php om de pagina te maken, dan kan ik, als ik dit wil, gelijk hieruit de percentages aan query's en normale code berekenen...

In ieder geval bedankt voor dit idee :)

sebsoft.nl


Acties:
  • 0 Henk 'm!

Verwijderd

$GLOBALS['mysql_queries']++; werkt ook fijn ;)

[ Voor 15% gewijzigd door Verwijderd op 31-07-2003 20:18 ]


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08

Acties:
  • 0 Henk 'm!

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 17-09 22:48
Thnx, maarre, ik weet niet of dat bij de rest ook zo is maar ik krijg een gave melding als ik op dat topic klik :
code:
1
2
This topic doesn't exist
(Interne identificatie: topic::get_topicdata::no_topic_found)

sebsoft.nl


Acties:
  • 0 Henk 'm!

  • eth0
  • Registratie: Mei 2002
  • Laatst online: 15-09 22:14
MySQL

PHP:
1
2
$mysqlstat = mysql_stat ();
echo $mysqlstat


geeft als uitput
code:
1
Uptime: 112354 Threads: 1 Questions: 1254 Slow queries: 0 Opens: 132 Flush tables: 1 Open tables: 64 Queries per second avg: 0.011

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Icheb schreef op 31 July 2003 @ 22:25:
[...]

Thnx, maarre, ik weet niet of dat bij de rest ook zo is maar ik krijg een gave melding als ik op dat topic klik :
code:
1
2
This topic doesn't exist
(Interne identificatie: topic::get_topicdata::no_topic_found)
ik denk dat hij deze link bedoelt: [rml]Helmet in "[ php] ongebruikte functie -> wel extra '"[/rml]

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
ja, die bedoelde ik inderdaad :X
Pagina: 1