次のようなエラーログを見たことはありますか ?
PHP Fatal error: Allowed memory size of xxxxxx bytes exhausted (tried to allocate xxx bytes) in /var/www/wordpress/wp-includes/wp-db.php on line 2007
これはつまり、データベースからデータを取得することで PHP メモリー上限 を超えてしまったことを意味します。多くの場合、サイトが大量のデータを持っており、凄まじい量のループを行なっているときにこのケースが発生します。
しかし、私たちが知りたいのは、どのプラグインがデータを取得しているのか?です。
葉隠は wp-db.php がメモリー上限エラーを引き起こすと、追加の情報を error.log ファイルに追加します:
このログは wp-db.php によって引き起こされるメモリー制限の致命的なエラーが必ず後に続きます。これで #8 が get_posts を繰り返し呼び出していることが判明します。
CloudWatch Logs のような通知サービスを利用してログを監視することをオススメします。 この類のエラーは本番環境で起こることが多く、しかもそれを目にすることはあまりありません。 私たちは葉隠を自分たちのホスティングサービスで利用していますので、実装の詳細に触れたブログが公開されるのを楽しみにしてください !
このプラグインはまた、エラーログにデバッグ・バックトレースを追加します。バックトレースするエラーレベルを変更したい場合は、wp-config.php その他に定数を定義してください。
それに加え、 SAVEQUERIES が true になっている場合、スロークエリログにデバッグ・バックトレースが追加されます。デバッグがはかどります。
謝辞
ダミーコンテンツの元になった文章はチャールズ・ディケンズの “Three Ghost Story” です。テキストファイルは Project Gutenberg にあったものを少し修正しました。
