[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を読み込んだ方が速いと思ったのですけどね。

 

この記事を書いた人:

ナカシマ

北区赤羽在住のWEBデザイナー兼エンジニア。インターネット、WordPress、本・漫画、音楽が大好き。妻と猫と暮らすアップル信者。

BLOG: 着ぐるみ追い剥ぎペンギン