PT Skrevet 29. september 2004 Del Skrevet 29. september 2004 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? Lenke til kommentar
jorgis Skrevet 29. september 2004 Del Skrevet 29. september 2004 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
PT Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 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 Mulig det ikke lar seg gjøre.. Lenke til kommentar
Torbjørn Skrevet 29. september 2004 Del Skrevet 29. september 2004 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 Lenke til kommentar
PT Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 Fremdeles uklar? Jeg vil helst ikke bruke en egen funksjon for å sende spørringer, men blir det da umulig å telle de? Lenke til kommentar
PT Skrevet 29. september 2004 Forfatter Del Skrevet 29. september 2004 Argh *sette igang med diverse omskrivinger* Lenke til kommentar
jorgis Skrevet 30. september 2004 Del Skrevet 30. september 2004 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. Lenke til kommentar
Nervetattoo Skrevet 30. september 2004 Del Skrevet 30. september 2004 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
JonV Skrevet 30. september 2004 Del Skrevet 30. september 2004 (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 Endret 30. september 2004 av JonV Lenke til kommentar
jorgis Skrevet 30. september 2004 Del Skrevet 30. september 2004 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. Lenke til kommentar
JonV Skrevet 30. september 2004 Del Skrevet 30. september 2004 Er jo et CMS system så at det er rotete overrasker ikke men det funker det var poenget. Lenke til kommentar
Torbjørn Skrevet 30. september 2004 Del Skrevet 30. september 2004 $db->num_queries er en eller annen wrapper klasse for mysqlforbindelsen Lenke til kommentar
JonV Skrevet 30. september 2004 Del Skrevet 30. september 2004 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. Lenke til kommentar
Torbjørn Skrevet 30. september 2004 Del Skrevet 30. september 2004 jeg bare poengterer at den gjør det som allerede er foreslått og som trådstarter håpet han ikke trengte Lenke til kommentar
PT Skrevet 30. september 2004 Forfatter Del Skrevet 30. september 2004 Har gått over til å mekke en fin databaseklasse, så da er vel problemet ute av verden. Baserer meg på din kode, mr jorgis Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå