WordPress‘in yüklenme hızı çalıştırdığı SQL komutlarının tamamlanma süresiyle doğrudan ilişkilidir. Bazen hasarlı bir MySQL tablosu, bazen bozulmuş bir indeks ve bazen de yanlış kodlanmış bir eklenti MySQL performasını çok ciddi ölçülerde düşürebilir (Hatta bu durumdan dolayı hosting firmanız tarafından uyarılabilirsiniz). SQL başarımının (performans) düşmesi sayfanızın geç açılmasına neden olur. Aşağıda anlatacağım yöntem ile WordPress’in hangi SQL’leri nekadar süre ile çalıştırdığını görebileceğiz. SQL’lerin çalışma süresi bize, başarım soruna daha iyi odaklanabilmek için kılavuzluk yapacak.
WordPress varsayılan olarak çalıştırılan SQL’lerin başarım kayıtlarını tutmaz. Aşağıdaki define direktifini wp-config.php dosyasına ekleyerek SQL istatistiklerinin tutulmasını söyleyeceğiz.
1 2 3 4 5 |
/* wp-config.php */ define('SAVEQUERIES', true); |
SQL istatistik kayıtlarının WordPress tarafından tutulmasını sağladıktan sonra bu bilgileri sayfaya yazdırmalıyız. Örneğin tema dizininizdeki footer.php dosyası bunun için uygundur. Dilerseniz header.php, page.php, header.php veya single.php‘yi de bu amaçla kullanabilirsiniz. Bu örnekte aşağıda gördüğünüz php kodlarını, footer.php‘nin sonuna yerleştirdik. Böylece SQL başarım bilgilerini sayfamızın sonunda göreceğiz.
1 2 3 4 5 6 7 |
/* footer.php */ .. global $wpdb; print_r($wpdb->queries); |
Sayfamızda görüntülenecek SQL başarım bilgisi aşağıdakine benzer olacaktır. Burada çalıştırılan SQL cümlesini ve kaç saniyede çalıştırıldığını görebilirsiniz. Süre olarak 1 saniyeye çok yakın veya daha fazla değerler görüyorsanız bu cümlelerde sorun var demektir. Sorgular çoğunlukla birkaç milisaniye içerisinde tamamlanmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
Array ( [0] => Array ( [0] => SELECT option_name, option_value FROM wpl_options WHERE autoload = 'yes' [1] => 0.0026021003723145 [2] => require, require_once, require_once, require_once, wp_not_installed, is_blog_installed, wp_load_alloptions ) [1] => Array ( [0] => SELECT option_value FROM wpl_options WHERE option_name = 'aiosp_post_title_format' LIMIT 1 [1] => 0.0003349781036377 [2] => require, require_once, require_once, require_once, include_once, get_option ) [2] => Array ( [0] => SELECT option_value FROM wpl_options WHERE option_name = 'wp_dlm_default_format' LIMIT 1 [1] => 0.00018095970153809 [2] => require, require_once, require_once, require_once, include_once, get_option ) [3] => Array ( [0] => SELECT option_value FROM wpl_options WHERE option_name = 'wp_dlm_url' LIMIT 1 [1] => 0.00018000602722168 [2] => require, require_once, require_once, require_once, include_once, get_option ) [4] => Array ( [0] => SELECT option_value FROM wpl_options WHERE option_name = 'wp_dlm_type' LIMIT 1 [1] => 0.00015783309936523 [2] => require, require_once, require_once, require_once, include_once, get_option ) } |