ハマログ

株式会社イーツー・インフォの社員ブログ

WordPressのメモリ制限エラーを回避する

WordPressで開発したプラグインを実行したり、既存のプラグインを利用して大量のデータを扱う際に、メモリ制限のエラーが発生することがあります。

PHP Fatal error: Allowed memory size of XXXXXXXXX bytes exhausted (tried to allocate XXX bytes) in ….

phpで上記のメモリエラーが発生した場合、php.iniのmemory_limitを増やすか、phpコード内でmemory_limitを変更します。今回、php.iniの変更で対処しようと思いましたが、結果は変わりませんでした。

memory_limit=512M

コードをしらべてみると、以下のとおりユーザ権限がmanage_optionsの時に、memory_limitを設定している事がわかりました

/wp-admin/admin.php

if ( current_user_can( 'manage_options' ) ) {
	@ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) );
}

さらに、定数管理しているファイルをみると以下のようにWP_MAX_MEMORY_LIMITは256Mとなっていました。

/wp-includes/default-constants.php

function wp_initial_constants() {
	global $blog_id;
	// set memory limits
	if ( !defined('WP_MEMORY_LIMIT') ) {
		if ( is_multisite() ) {
			define('WP_MEMORY_LIMIT', '64M');
		} else {
			define('WP_MEMORY_LIMIT', '40M');
		}
	}
	if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) {
		define( 'WP_MAX_MEMORY_LIMIT', '256M' );
	}

	// 略

ここを直接書き換えてもいいのですが、バージョンアップの際に上書きされる可能性があるため、wp-configのような、上書きされることのないファイルに定義したほうがよさそうです。

memory_limitPHPphp.iniメモリ制限

kaneko tomo   kaneko tomo   2015年8月10日


関連記事

Magentoで構築したサイトの脆弱性チェック

ASP以外での通販サイト構築を検討する場合、日本国内ではEC-CUBEのシェアが…

Excelで印刷するときに全シートにプリンタ設定を反映させる方法のページを見つけました

Excelで全シートを選択して両面印刷にしても最初のシートしか両面印刷してもらえ…

Swift2でRealmの設定値を確認する

Swiftの内部DBにRealmをつかった開発をしていて、既存のテーブル定義を変…


← 前の投稿

次の投稿 →