Gå til innhold

Telle antall mysql-spørringer


Anbefalte innlegg

Videoannonse
Annonse
Skrevet

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

 

:)

Skrevet
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..

Skrevet

eller du kan lage din egen mysql_query funksjon:

 

function mysql_query_custom($query){

 

global $QUERY_COUNTER;

$QUERY_COUNTER++;

 

return mysql_query($query);

 

}

 

og på hele siden bruke mysql_query_custom istedet for mysql_query

Skrevet

Fremdeles uklar? :hmm:

Jeg vil helst ikke bruke en egen funksjon for å sende spørringer, men blir det da umulig å telle de?

Skrevet

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

Skrevet

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.

Skrevet (endret)

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
Skrevet

Den koden der gjør nøyaktig det samme som min kodesnutt gjør, bare at den bruker en annen databaseklasse, og et annet navn på variablene. ;) Unødvendig rotete var den og.

Skrevet

den teller hvor mange queries det er mot db for å vise siden.

 

For å se hur den funker kan du/dere ta en titt på f.eks www.pitcher.no Helt i Bunn.

Skrevet

Har gått over til å mekke en fin databaseklasse, så da er vel problemet ute av verden.

Baserer meg på din kode, mr jorgis :)

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...