WordPress定期処理とキャッシュ(静的ファイル)でphpの負荷軽減

WordPress定期処理とキャッシュ(静的ファイル)でphpの負荷軽減

PHPの処理回数を減らす為にPHPでサーバー内のファイル編集を行わせ、サーバー内に静的ファイルを作成する方法を解説します。

スケージュール(WP_Cron)も合わせて解説します。スケジュールによるWordPressでの定期処理でもPHPの処理を減らすことができます。

キャッシュされていない頻繁に行われている処理に対して有効です。

 

  1. file_put_contentsでファイル作成・書き込みをする。
  2. WP_Cronを使った定期処理を設定する。
  3. ダッシュボードにアクセスした時にだけ処理をする。

 

 

file_put_contentsでファイル作成・書き込みをする。

$filename = 'newfile.php'; 
file_put_contents($filename, 'string');

1.$filename = ‘newfile.php’; 

ディレクトリ+ファイル名を書きましょう。\wp-content\memo.phpなど

2.file_put_contents($filename, ‘string’);

第一引数にディレクトリ+ファイル名、第二引数にファイルに書き込む内容を指定。

これでPHPで動的に作成していた部分を静的なファイルにします。

 

 

WP_Cronを使った定期処理を設定する。

function daily_function() {
 // 定期的に行わせたい処理
}
add_action( 'my_daily_event', 'daily_function' );
function my_activation() {
    if ( ! wp_next_scheduled( 'my_daily_event' ) ) {
        wp_schedule_event( time(), '10min', 'my_daily_event' );
    }
}
add_action('wp', 'my_activation');

6.if ( ! wp_next_scheduled( ‘my_daily_event’ ) ){}

スケジュールに既にイベントが存在するかを確認。スケジュールが既にある場合はどんどん同じスケジュールが追加されていってしまいます。

 

7.wp_schedule_event( time(), ’10min’, ‘my_daily_event’ );

スケジュールにイベントを登録、第一引数はこのまま固定

第二引数はスケジュールの間隔を指定、hourly,daily,twicedailyが標準で使える引数です。

第三引数は登録するイベント名

 

第二引数に使える間隔を設定する方法。10minは自作したものです。

add_filter( 'cron_schedules', 'my_add_10min' );
function my_add_10min( $schedules ) {
	$schedules['10min'] = array( //[]内が名前
		'interval' => 600, // 秒
		'display' => __('10min interval') // 表示名
	);
	return $schedules;
}

スケジュールに登録されたイベントの解除方法

wp_clear_scheduled_hook('my_daily_event');

 

しかしこのスケジュールは誰かがWordPressを動かさないとスケジュールの処理が行われません。クローラによるロボット徘徊でも良いです。とにかくページにアクセスされるまではスケジュールの確認が行われません。

wp_schedule_event( )で登録した間隔を誰かがページにアクセス時に超えていればスケジュールに登録した処理が行われるという感じです。もちろん誰かがアクセスする度にスケジュールの確認が行われます。大量にCronを登録するのも好ましくないでしょう。

 

 

ダッシュボードにアクセスした時にだけ処理をする。

頻繁にコードを作成させる必要がない場合はダッシュボードにアクセスしたときだけ静的ファイルを作成させる方法もあります。ファイルはfile_put_contents()で作ります。

カテゴリの一覧など新たに記事を作成したときにだけ動的にHTMLを作成させれば良い部分にはこの方法が効果的です。

wp-admin/edit.phpにコードを追加することでダッシュボードの投稿にアクセスしたときに行う処理を設定できます。

ダッシュボードトップならwp-admin/index.phpです、あなたのダッシュボードのページURLをブラウザで確認すればわかると思います。

作成した静的ファイルは<?php include(TEMPLATEPATH . ‘ファイル指定’); ?>で読み込ませましょう。

 

 

file_put_contents()とWP_Cronと処理させるタイミングを絞ることでMySQLを使わずとも擬似的にキャッシュを作ることができます。

分からないことがあればコメントしてください。

       ____
     /⌒  ⌒\
   /  癶   癶 \
  /::::::⌒(__人__)⌒::::: \ コメント待ってるよー
  |     |r┬-|     |
  \      `ー'´     /

コメントを残す

メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。URLを含むコメントは承認待ちになります。