8 berichten aan het bekijken - 1 tot 8 (van in totaal 8)
  • Q:
    Inactief
    Anoniem

    [PHP/MySQL] Aantal queries dat script genereert

    Ik wil weten hoeveel MySQL-queries worden gegenereerd door een PHP-script.

    Daar kan ik natuurlijk op de volgende manier achterkomen.

    Begin van de pagina:
    [code:1:aa71c2ce46]$aantal_queries = 0;[/code:1:aa71c2ce46]

    En vervolgens na elke mysql_query() commando:
    [code:1:aa71c2ce46]$aantal_queries++;[/code:1:aa71c2ce46]

    Aan het eind van het script is $aantal_queries dan gelijk aan het aantal queries dat het script heeft gegenereerd.

    Ik ben benieuwd of hetzelfde bereikt kan worden ZONDER een dergelijk tellertje.

    Ik maak bijvoorbeeld gebruik van phpMyAdmin. Als ik daar op ‘status’ klik zie ik hoeveel queries er zijn uitgevoerd sinds het opstarten van de server. Het totaal aantal queries wordt dus ergens bijgehouden. Aan het begin van een PHP-script zou ik dit aantal kunnen bepalen. Aan het einde van het script kan ik dit opnieuw doen. Het verschil is het aantal queries dat door het script is gegenereerd.

    Dit leidt echter tot problemen als er meerdere scripts tegelijkertijd worden uitgevoerd.

    Ik kan me zo voorstellen dat er, aan het begin van het PHP-script, bij het verbinden van de database (mysql_connect()) een nieuwe sessie wordt aangemaakt. En dat deze sessie aan het einde van het script wordt afgesloten. Als MySQL het totaal aantal queries bijhoudt, dan wordt misschien ook wel het aantal queries per sessie bijgehouden… (hoop hoop hoop)

    Is dit het geval? Zo ja, hoe kom ik hier achter?
    Of is er een andere manier om achter het aantal queries te komen (zonder tellertje!)?

    Bijdrager
    klaus

    Ik weet niet of dat ergens bij wordt gehouden. Wat je wel kan doen is een abstracte klasse gaan maken waar je uw database connectie en queries mee doet. Op die manier hoef je enkel maar bijv execute_query($sql); uit te voeren, die verder volledig hetzelfde doet als mysql_query($sql), maar intern steeds een teller verhoogd.

    Bijdrager
    tw

    het kan ook als volgt..

    [code:1:423709ac9d]
    $conn_ = mysql_connect ($host, $dbuser, $pass);
    mysql_select_db ($dbdb);

    $status = explode(’ ‘, mysql_stat($conn_));
    echo $status [2]; //print_r($status);
    [/code:1:423709ac9d]

    maar dit is een optellend aantal… denk niet dat de bedoeling is, jij bedoelt denk ik het aantal queries per pagina

    edit: ik heb het online geprobeerd… en denk dat je ook hier nietrs aan hebt

    Bijdrager
    GeertDD
    ”klaus”

    Wat je wel kan doen is een abstracte klasse gaan maken waar je uw database connectie en queries mee doet. Op die manier hoef je enkel maar bijv execute_query($sql); uit te voeren, die verder volledig hetzelfde doet als mysql_query($sql), maar intern steeds een teller verhoogd.

    Inderdaad. Ik doe het zelfs zonder class maar gewoon met één vervangende functie voor mysql_query. Concreet wordt dat dan zoiets:
    [code:1:08969d7b32]function execute_query($sql = ”) {

    static $query_count = 0;

    if ($sql == ”)
    return $query_count;

    $query_count++;
    return mysql_query($sql);

    }[/code:1:08969d7b32]

    Inactief
    Anoniem
    ”xsight3″

    het kan ook als volgt..

    [code:1:df90774a79]
    $conn_ = mysql_connect ($host, $dbuser, $pass);
    mysql_select_db ($dbdb);

    $status = explode(’ ‘, mysql_stat($conn_));
    echo $status [2]; //print_r($status);
    [/code:1:df90774a79]

    maar dit is een optellend aantal… denk niet dat de bedoeling is, jij bedoelt denk ik het aantal queries per pagina

    Ik bedoel idd iets soortgelijks, maar dan per script/pagina. Bovenstaande levert –zoals gezegd– problemen op als er meerdere scripts tegelijkertijd worden uitgevoerd.

    Inactief
    Anoniem
    ”klaus”

    Ik weet niet of dat ergens bij wordt gehouden. Wat je wel kan doen is een abstracte klasse gaan maken waar je uw database connectie en queries mee doet. Op die manier hoef je enkel maar bijv execute_query($sql); uit te voeren, die verder volledig hetzelfde doet als mysql_query($sql), maar intern steeds een teller verhoogd.

    Daar had ik ook aan gedacht. Ik gebruik doorgaans wel een klasse met databasefuncties. Het lastige is alleen dat die ‘databaseklasse’ door verschillende andere klasses wordt gebruikt.

    Stel, mijn databaseklasse heet db.php.

    In klasse #1 staat
    [code:1:61ff75d332]
    require_once(’db.php’);
    $this->db = new db();
    [/code:1:61ff75d332]

    In klasse #2 staat hetzelfde.

    Hoe geef ik de waarde van het tellertje dan door?

    Dit lijkt me lastig. Dus vandaar dat ik zocht naar een simpelere oplossing.

    Bijdrager
    kluivers

    waar gebruik je het tellertje voor ? Je kan via mysql mysql admin downloaden en daar kun je server belasting in bekijken. wellicht is dat een optie. Maw waar heb je het voor nodig als ik mag vragen.

    Inactief
    Anoniem
    ”kluivers”

    waar gebruik je het tellertje voor ? Je kan via mysql mysql admin downloaden en daar kun je server belasting in bekijken. wellicht is dat een optie. Maw waar heb je het voor nodig als ik mag vragen.

    Zoals ik al schreef ben ik niet zozeer geïnteresseerd in de serverbelasting als geheel, maar in de serverbelasting per script/pagina.

    Waarom ik het wil weten? Onder meer om te achterhalen hoe het aantal queries (en het soort queries) zich verhoudt tot de snelheid waarmee het script wordt uitgevoerd c.q. de pagina wordt geladen.

8 berichten aan het bekijken - 1 tot 8 (van in totaal 8)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.