Ghi nhật ký tất cả các truy vấn SQL trong WordPress
Khi phát triển website và tối ưu website hay fix bug WordPress tôi hay bật toàn bộ debug lên và cả bật các SQL queries lên để xem có vấn đề nào cần được giải quyết hay không, trong bài viết trước đó tôi đã hướng dẫn cách để bạn bật debug trong WordPress lên và bạn có thể xem qua bài viết tại đây
Trong bài viết này tôi sẽ share 1 đoạn code để chúng lưu lại toàn bộ SQL queries mà website của bạn đã thực hiện theo thời gian thực.
Hàm
I. Ghi nhật ký tất cả các truy vấn SQL trong WordPress
Để lưu log toàn bộ SQL queries trước tiên bạn phải thêm code này vào filewp-config.php
, file wp-config.php nằm ở đâu thì bạn có thể xem tại bài viết này
define('SAVEQUERIES', true);
Tiếp theo bạn hãy thêm code phía dưới vào file functions.php
nhé.
Các truy vấn được truy cập bằng cách sử dụng class $wpdb
, bạn có thể thêm mã để kết xuất các truy vấn này vào tệp nhật ký hoặc hiển thị chúng cho mục đích gỡ lỗi.
1 2 3 4 5 6 7 8 |
add_action( 'shutdown', function() { global $wpdb; if ( current_user_can( 'administrator' ) ) { $log_file = ABSPATH . '/wp-content/debug_sql.log'; $log = print_r( $wpdb->queries, true ); file_put_contents( $log_file, $log, FILE_APPEND ); } }); |
current_user_can( 'administrator' )
sẽ chỉ ghi các query khi quản trị viên login vào website, tuỳ theo sự linh động của công việc bạn có thể xoá hoặc code điều kiện ghi log cho phù hợp.
Đoạn mã này sẽ nối thêm tất cả các truy vấn được thực hiện trong quá trình tải trang vào một tệp có tên debug_sql.log
nằm trong thư mục wp-content
. Bạn nên kiểm tra xem thư mục wp-content
có thể ghi được không nha.
Sau khi thêm code kia vào file functions.php thì bạn có thể mở ra 1 url website của bạn để test
Lưu ý code này chỉ dành cho mục đích phát triển vì file log sẽ tăng size lên nhanh chóng và bạn cần xoá chúng khi đã giải quyết được vấn đề hoặc tìm ra cái bạn đã muốn.