ハマログ

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

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   2015年8月10日


関連記事

Javaのキャッシュ処理 – Ehcache

こんにちは、かねこです。 はじめに Javaのキャッシュ処理といえばJCache…

社内で「最近のフロントエンド事情」と題してReactを紹介しました

e2infoには”ランチMTG”という社内勉強会とLTが…

PhpStorm & Docker (for Mac)でデバッグ

前回はPhpStorm&Vagrantの組み合わせでXdebugによるデ…


← 前の投稿

次の投稿 →