HoBoFoTo

Hobo everyday foto.

日本語 English

WordPressで APCu を使うときに管理画面が固まる現象を解消する

 xreaでphp7.0にして、よかったことがOPcacheとAPCuが使えるようになったことです。
 これを機にせっかくあるAPCuの機能をフルで使おうと、

WordPress.org 日本語
APCu Object Cache Backend
An object-cache implementation using the APCu extension.
をダウンロードし、「/wp-content/」ディレクトリに「object-cache.php」をおいてdata cacheをとっていたのですが...

 どうもプラグインの相性が悪いのか、管理画面で、すぐに前のキャッシュを持ってきて、プラグインの変更がちゃんと出来なかったり、一回目のクリックでは動かなかったりと、相性がとても悪かったのです。
 使うのをやめようかと思ったときもありましたが、せっかくある機能を有効に使わないのはよくないと思いなんとか方法を考えていました。

 一時期は、

WordPress.org 日本語
YASAKANI Cache
Simple ! Easy !! Ultra-high-speed !!!. Definitive edition of the page cache. And Bot and Security Utility.
を使ってAOCuでページキャッシュに使っていたのですが、変更がすぐに反映されないのはちょっといやだったので、変更はすぐに反映されていました。(私の勘違いでした。すいません)使うのをやめました。

 で、やっぱり「object-cache.php」を使うのをやめられないかと考えた末に、管理画面にログインしているときは、「object-cache.php」を削除し、ログアウトするときに「object-cache.php」を復活させればいいのでは、と考えました。

 早速テーマフォルダの「functions.php」に

//object-cache.phpをログイン時に削除しログアウト時に復活させる方法
add_action( 'wp_login', 'remove_object_cache_file', 10, 2 );
add_action( 'wp_logout', 'add_object_cache_file', 10, 2 );
function remove_object_cache_file ( $user_login , $current_user ) {
  $file = WP_CONTENT_DIR . '/object-cache.php';
	unlink($file);
	return;
}
function add_object_cache_file() {
	$from = dirname( __FILE__ ) . '/object-cache.php';
	$to = WP_CONTENT_DIR . '/object-cache.php';
	copy( $from, $to );
	return;
}

を記入してアップロード、同じフォルダに、「object-cache.php」もアップロードしたところ、ちゃんと管理画面にログイン中は、「object-cache.php」が消えていて、ログアウト後に「object-cache.php」が「/wp-content/」に作成されているようになります。

 これで、なんとか管理画面の変な挙動を押さえることが出来るようになりました。

追伸:管理人1人、ユーザーを作らせない設定だから、このやり方で上手くいくと思います。ユーザーがたくさんいるサイトには不向きな設定ではないかと思います。
 

よかったらクリックしてください。
にほんブログ村 IT技術ブログ WordPressへ

共有:

コメント一覧

  1. YASAKANI Cache の作者です
    APCu なかなか使いこなしが難しいですよね
    私もキャッシュプラグインの一部で活用していますが、環境によりうまくいったりいかなかったりで調べると

    FastCGIのPHPだとこんな制限があります

    http://ja.phptherightway.com/#caching 

    このページでこんな記述をみつけ納得しました

    PHPを(Fast-)CGIアプリケーションとしてウェブサーバーで実行するときには、 すべてのPHPプロセスが自身のキャッシュを持つことになる。つまり APCuのデータもワーカープロセス間では共有されないということだ

    つまり、複数のプロセスが起動されるとプロセス間で APCu データの共有が出来ないので予想外の動作となることがあるということ、使い方次第ですがクセがすごい 

    ちなみに YASAKANI Cache はログインユーザーにはキャッシュの出力は行いませんし、記事更新時は、自動的にそのページのキャッシュをクリアしているので変更がすぐに反映されないということはないはずです (^^)

    • Dr?Thomas より

      わざわざこんなサイトにまで来ていただきありがとうございます。
      よくわからず、「変更がすぐに反映されないのはちょっといやだった」てな事を書いてしまい申し訳ありません。
      ただ自分には合わなかったので、惜しいですがやむなく使うのをやめました。
      なかなか厄介者のAPCuを使おうと考えているのでこれからもアドバイスお願いします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です