Gå til innhold

Telle antall mysql-spørringer


Anbefalte innlegg

Videoannonse
Annonse

Du kan for eksempel lage deg en klasse som utfører en spørring, og da kan du inkrementere en variabel for hver spørring som utføres.

 

Eksempelklasse:

 

class Database {

// medlemsvariabler

var $connection;
var $query;
var $result;
var $query_count = 0;

// tilkoblingsinfo

var $bruker;
var $password;
var $host;
var $db;

function Databaset() { // basic constructor. void Database(void)
$this->bruker = "xxx";
$this->password = "xxxl";
$this->host = "xxx";
$this->db = "xxx";
$this->connect();
}

/************************************************************\
| mySQL-tilkobling                      	|
\************************************************************/

function connect() { // bool connect(void)
if ($this->connection = mysql_connect($this->host,$this->bruker,$this->password) or die("Could not connect to database: " . mysql_error())) 
{
if ($this->connection = mysql_select_db($this->db) or die("Could not select database: " . mysql_error())) 
{
 return true;
}
else {
 return false;
}
}
else {
return false;
}
}

function closeDB() { // bool closeDB(void)
mysql_close();
return true;
}

function run_query($query) { // bool run_query(string query)
$data = mysql_query($query) or die("Could not execute query: " . mysql_error());
$this->query_count++; // her skjer magien
       if ($_GET['debug']) //debug-greie. printer spørringene
       {
           echo "<div id=\"debug\">$query</div>";
       }
return $data;
}

function get_res($data) { //object get_res( resource data )
$data = mysql_fetch_object($data);
return $data;
}

function query_count() { // int query_count(void)
return $this->query_count;
}
}

 

eksempel på bruk av klassen:

 

include 'database.php';
$db = new Database;

$query = $db->run_query("SELECT * FROM *"); //kjører en spørring
$res = $db->get_res($query); //laster dataene over i et objekt

echo $res->feltnavn;

echo $db->query_count(); //returnerer tallet 1

 

:)

Lenke til kommentar
Er det mulig å telle antall spørringer en side gjør (slik som nederst på siden her) til mysql uten å måtte bruke metoder som denne?

:)

 

Mulig det var litt uklart, men jeg ville altså helst slippe å gjøre det på den måten du foreslår. Blir mye kodeomskriving da :p

Mulig det ikke lar seg gjøre..

Lenke til kommentar

Det er uansett mye lettere når du har en egen klasse til det. Man slipper å kjøre on die() for hver eneste spørring, siden det er lagt til i klassen. En annen fordel med å kjøre det gjennom en sånn klasse er at du kan legge til en liten ?debug=1 i adresselinjen og få opp info om de forskjellige spørringene som blir brukt. Grei for å finne ut hvilken spørring som repeteres 45 ganger på grunn av en ødelagt while-løkke. :p

Lenke til kommentar

Vil anbefale på det sterkeste og lage en database klasse.

De store fordelene er at du i de tilfeller du f.eks skulle ønske og bytte database så gjør du bare endringer en plass i stedet for kanskje 100, 200, 1000 osv.

Og du kan også veldig enkelt legge inn debug funksjoner, tellere og logging osv.

 

Om du ikke ønsker og skrive en selv søker du bare litt rundt på "database abstraction mysql" eller noe lignende.

Kan anbefale eclipse biblioteket som er et stykke glimrende php bibliotek.

Lenke til kommentar

kom til å tenke på at dette er en innebygd funksjon i CpgNuke.

 

da kommer det tekst

Sidegenerering: 0.1459 Sekunder and 34 DB Queries in 0.0342 Sekunder

i bunn av siden.

 

koden for dette ligger i footer.php

Koden for CpgNuke ser ihvertfall slik ut.

 

function footmsg() {
   global $foot1, $foot2, $foot3, $copyright, $total_time, $start_time, $db;
   $end_time = get_microtime();
   $total_time = ($end_time - $start_time - $db->time);
   $total_time = _PAGEGENERATION." ".substr($total_time,0,6)." "._SECONDS." and ".$db->num_queries." DB Queries in ".substr($db->time,0,6)." "._SECONDS;

 

Da kan du jo kansje komme litt lengre.

 

Glemte å trykke post Tidligere idag :D

Endret av JonV
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...