class Foo extends PDO { function __construct() { try { parent::__construct('mysql:host='.DB_HOST.';dbname='.DB_NAME.';port=3305', DB_USER, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES ".DB_CHARSET)); $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(Exception $e) { } } function query($query) { $zapytanie = $query; $time=''; $query = parent::query($query); $this->timeall += $time; $this->iQueryCount++; $this->stats['num']=$this->iQueryCount; $this->stats['query'][$this->iQueryCount] = 'Zapytanie: '.$zapytanie.' | Czas wykonywania: '.round($time*1000, 4); return $query; } function prepare($query) { $zapytanie = $query; $time=''; $query = parent::prepare($query); $this->timeall += $time; $this->iQueryCount++; $this->stats['num']=$this->iQueryCount; $this->stats['query'][$this->iQueryCount] = 'Zapytanie: '.$zapytanie.' | Czas wykonywania: '.round($time*1000, 4); return $query; } function query_stats() { return $this->stats; } }
Wszystko działa pięknie i ładnie, ale tylko dla query, w przypadku prepare liczona jest liczba zapytań, ale czas zapytania jest zawsze 0, czyli coś tu jest nie tak, a właśnie najważniejsze jest to żeby liczyć czas zapytań wykonywanych przez prepare, ponieważ jak wiadomo ta metoda wykonywana jest najczęściej. Macie jakieś pomysły jak to rozwiązać?