[PHP] PDO + Abfrageanalyse

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Spo0n22, 16. Januar 2013 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 16. Januar 2013
    Zuletzt bearbeitet: 16. Januar 2013
    PDO + Abfrageanalyse

    Guten Abend =)

    Zu meinen Anliegen, ich bin gerade dabei meine Homepage zu "tunen" gerne würde ich jede Datenbank Abfrage analysieren. Im Moment arbeite ich mit PDO als Datenbankklasse und würde diese weiterhin gerne verwenden.
    Analysiert werden soll: Wie viele Abfragen, die Fehler, Verbesserungvorschläge (Explain), Abfragedauer in Sekunden. Dies sollte am liebten in einem Array gespeichert werden und am Ende der Homepage in der folgenden Form ausgegeben werden:

    Spoiler
    {bild-down: http://www.freelancephp.co.uk/wp-content/uploads/2011/01/mysql_explain_extended.png}


    Im Moment arbeite ich mit der PDO Classe und habe diese bereits umgeschrieben:
    PHP:

    class  PDO_  extends  PDO  {


      public function 
    __construct ( $dsn $username $password ) {
        
    parent :: __construct ( $dsn $username $password );
        
    $this -> setAttribute ( PDO :: ATTR_ERRMODE PDO :: ERRMODE_EXCEPTION );
      }
      
      public function 
    exec ( $sql ) {
        return 
    parent :: exec ( $sql );
      } 

      public function 
    prepare ( $statement $options  NULL ) {
        
    $stmt  parent :: prepare ( $statement , array(
          
    PDO :: ATTR_STATEMENT_CLASS  => array( 'PDOStatement_' )
        ));

        
    $stmt -> setFetchMode ( PDO :: FETCH_ASSOC );
        return 
    $stmt ;
      }

      public function 
    query ( $sql $params  = array()) {
        
    $stmt  $this -> prepare ( $sql );
        
    $stmt -> execute ( $params );
        return 
    $stmt ;
      }
      
      
    }

    class 
    PDOStatement_  extends  PDOStatement  {
     
      public static 
    $benchmark ;

      public function 
    execute ( $params  = array()) {
        
    $cstart  microtime ();
        
    parent :: execute ( $params );
        
    self :: $benchmark  = ( microtime () - $cstart );
        return 
    $this ;
      }

      public function 
    fetchSingle () {
        return 
    $this -> fetchColumn ( 0 );
      }
      

      public function 
    fetchAssoc () {
        
    $this -> setFetchMode ( PDO :: FETCH_NUM );
        
    $data  = array();
        while (
    $row  $this -> fetch ()) {
          
    $data [ $row [ 0 ]] =  $row [ 1 ];
        }
        return 
    $data ;
      }
      
    }
    Gibt es vielleicht eine fertige Lösung?
    Ich konnte leider nach langer Recherche nichts finden und hoffe daher auf eure Hilfe

    LG
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.