[WordPress]”wp-load.php”を読み込んだPHPファイルとWPのテンプレートファイルではどちらが速いか?
WordPressは「require ‘wp-load.php’」のようにして、wp-load.phpを読み込めば、テーマファイルでない、phpファイルでも the_post() のようなWordPressの関数が使えるようになります。
では、このようなphpとテーマファイルでは、どのように実行速度が違うのか試してみました。
目次
テスト環境
テスト環境は、このブログのサーバー上で行ったのでAWS・網元ですので↓の通り。
OS: Amazon Linux AMI release 2013.03
Web: Nginx 1.4
PHP: PHP 5.4 with APC
インスタンスはEC2はmediumで、DBはRDS mediumです。
WordPressの状態ですが、9000記事を所持しているブログから、3000記事を表示させるというテストをしてみました。
同じ条件の中で、同一サーバー内で↓のphpの場合では、どのように違うか比べてみました。
A: wp-load.phpを読み込んだPHPファイル
B: 固定記事ページ
A: wp-load.phpを読み込んだPHPファイル
まずは、WordPressコアファイルのwp-load.phpを読んだだけのPHPファイルです。
サーバー上に「test.php」のようにWordPressとは関係ない独立したファイルになっています。
コードは下記のようにしてみました。
<?php require '../wp-load.php'; $start_time = microtime( true ); query_posts( 'posts_per_page=3000' ); $json = array(); while ( have_posts() ) { the_post(); $json[] = array( "id" => $post->ID, "title" => get_the_title(), "permalink" => get_permalink(), "content" => get_the_content(), "excerpt" => get_the_excerpt(), "date" => get_the_date( "Y-m-d H:i:s", "", "", false ) , "author" => get_the_author() ); } $end_time = microtime( true ); $finish_time = $end_time - $start_time; echo "処理時間:".sprintf( '%0.5f', $finish_time )."秒"; exit();
これを3回やってみた結果は以下のとおり。
処理時間:5.67879秒
処理時間:6.37002秒
処理時間:6.17586秒
B: 固定記事ページ
次は固定ページです。スラッグを「sample」のように固定記事ページを作ります。
そしてテーマファイルに以下のような「page-sample.php」を作りました。
<?php $start_time = microtime( true ); query_posts( 'posts_per_page=3000' ); $json = array(); while ( have_posts() ) { the_post(); $json[] = array( "id" => $post->ID, "title" => get_the_title(), "permalink" => get_permalink(), "content" => get_the_content(), "excerpt" => get_the_excerpt(), "date" => get_the_date( "Y-m-d H:i:s", "", "", false ) , "author" => get_the_author() ); } $end_time = microtime( true ); $finish_time = $end_time - $start_time; echo "処理時間:".sprintf( '%0.5f', $finish_time )."秒"; exit();
結果は以下のとおり
処理時間:5.66780秒
処理時間:5.65177秒
処理時間:5.77884秒
結果だけを見ると対して変わらない。
というか、固定ページで作った方が若干速いという結果になりました。
僕の予想では、wp-load.phpを読み込んだ方が速いと思ったのですけどね。