ハマログ

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

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日


関連記事

SpringFrameworkのAutowiredでQualifierタグを利用

こんにちは、かねこです。 はじめに SpringFrameworkのAutowi…

いまどきのPHPのはなし

クライアントの話を聞いているとあまりよい印象を持たれていないPHPですが、ここ数…

node.jsフレームワーク「Adonis」(2)

前回は「Adonis」をインストールし、サーバ起動で動作確認までを行ってみました…


← 前の投稿

次の投稿 →