2012-10-12 41 views
6

Tôi đang tìm cách mở rộng đối tượng PDO bằng cách nào đó để thêm bộ đếm nội bộ mỗi lần truy vấn được thực hiện. Tôi muốn làm điều này theo một cách là tôi sẽ không phải thay đổi bất kỳ truy vấn hiện tại nào của tôi hoặc thêm một hàm phụ like this suggests.Đếm số truy vấn Mỗi lần tải trang bằng PDO

Tôi không quen thuộc với các lớp học hoặc lớp PDO nói riêng, nhưng điều này có thể được thực hiện không? Làm thế nào tôi sẽ đi về điều này?

Tôi đang suy nghĩ mở rộng queryexecute và tăng biến được lưu trữ mỗi lần chúng được gọi.

Trả lời

7

Mở rộng PDO sẽ được thực hiện giống như bất kỳ lớp nào khác. Điều này có phù hợp với nhu cầu của bạn không? Thay đổi mã duy nhất khác sẽ phải khởi tạo lớp này thay vì lớp PDO khi thực hiện kết nối ban đầu của bạn.

class PDOEx extends PDO 
{ 
    private $queryCount = 0; 

    public function query($query) 
    { 
    // Increment the counter. 
     ++$this->queryCount; 

    // Run the query. 
     return parent::query($query); 
    } 

    public function exec($statement) 
    { 
    // Increment the counter. 
     ++$this->queryCount; 

    // Execute the statement. 
     return parent::exec($statement); 
    } 

    public function GetCount() 
    { 
     return $this->queryCount; 
    } 
} 
+1

Hoạt động tốt! Chỉ cần những gì tôi đang tìm kiếm. Mặc dù, tôi đã thay đổi 'exec' thành' preparation'. Tôi nghĩ rằng sẽ nắm bắt tất cả các công dụng của tôi. –

+0

OOP thật tuyệt vời: D – Juddling

+0

Điều này có thể được thực hiện bằng cách nào đó để tính toán 'PDOStatement' không? – Daniel

0

Chỉ cần thực hiện:

SHOW PROFILES; 

Các vĩ đại nhất Query ID là những gì bạn đang sau. Điều này cũng sẽ cung cấp cho bạn thông tin về thời gian thực hiện truy vấn 15 (mặc định) cuối cùng.

Các vấn đề liên quan