ハマログ

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

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日


関連記事

maven-war-plugin でファイルを除外する

maven-war-plugin 余計なファイルをアーカイブされないようにしたい…

monacaでiPhoneアプリ

こんにちは。池島です。たまには技術ネタを。と思い一生懸命仕込みました。 mona…

A5:SQL Mk-2を使用してテーブル定義書を作成

こんにちは。S.Iです。 今回は、テーブル定義書のリバース生成 (Oracle/…


← 前の投稿

次の投稿 →