WordPress自体のメモリ使用量の上限(memory_limit)を変更する方法です。
よく知られている「php.ini」でサーバー上のメモリ上限を決めれますが、実はWordPressの方にもメモリの使用量を決めている「WP_MEMORY_LIMIT」と「WP_MAX_MEMORY_LIMIT」という設定値が存在します。
WordPressがメモリ不足になる場合はこの値を変更する必要があります。
この記事の目次
WordPressのメモリ上限を変更する方法
WordPress自体にもメモリの上限を決める設定があるのはご存じですか?
WordPressではコアファイル(default-constants.php)内に以下のようなコードが書かれており、WordPress自体が使えるメモリの上限は初めから決められています。
// Define memory limits. if ( ! defined( 'WP_MEMORY_LIMIT' ) ) { if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) { define( 'WP_MEMORY_LIMIT', $current_limit ); } elseif ( is_multisite() ) { define( 'WP_MEMORY_LIMIT', '64M' ); } else { define( 'WP_MEMORY_LIMIT', '40M' ); } } if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) { if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) { define( 'WP_MAX_MEMORY_LIMIT', $current_limit ); } elseif ( -1 === $current_limit_int || $current_limit_int > 268435456 /* = 256M */ ) { define( 'WP_MAX_MEMORY_LIMIT', $current_limit ); } else { define( 'WP_MAX_MEMORY_LIMIT', '256M' ); } }
このコードにより、WordPressのメモリ上限は以下の値に設定されます。
- シングルサイトの場合のメモリ上限:40MB
- マルチサイト(複数サイト)の場合のメモリ上限:64MB
- 管理画面のメモリ上限はシングル・マルチサイト共に256MB
サーバー上の「php.ini」や「.htaccess」を編集して「memory_limit」というPHPの設定値(ディレクティブ)を変更し、PHPのメモリ上限を増やす方法は有名ですが、これだけではWordPress自体のメモリ制限は変更できていない事に注意が必要です。
この記事ではサーバー全体のメモリ使用量の上限ではなく、WordPress自体のメモリを変更する方法を詳しく解説していきます。では早速色々書いていきます・w・
サイトがメモリ不足になるとどうなる?
メモリ不足のエラーは特にサーバーに負荷がかかる仕事、例えば画像の一括編集時などに特に起きやすくなります。そして一般的にWordPressなどのPHPを使ったサイトがメモリ不足に陥ると、以下のようなエラーが出ます。
ページ自体にエラーが表示されていなくても、エラーログなどに上記のようなエラーが記録されていることを確認できた場合にも今回の作業が必要になります。
現在エラーが出ていないなら問題ないとも言えますが、せっかくならWordPressの方でもある程度メモリの使用量に余裕を持たせておいた方が安心だったりしますね。
メモリの設定値は「サイトヘルス」で確認可能
現在自分のサイトのWordPressのメモリ上限はいくらに設定されているのか?は、WordPressの「サイトヘルス」という機能を使えば1発で確認することができます。
サイトヘルスでWordPress本体のメモリ上限を確認する方法は以下の通りです。
WordPressの管理画面にログインしたら「ツール > サイトヘルス」に進みます。
サイトヘルスが開いたら、タブをステータスから情報というタブに切り替えて、一覧項目の中にある「WordPress定数」の項目を開きましょう。
“WordPress定数”の項目に表示されている以下の値がWordPressに設定されているPHPのメモリ上限(memory_limit)です。
- WP_MEMORY_LIMIT:一般ページ(フロントページ)のメモリ上限
- WP_MAX_MOEMORY_LIMIT:管理画面のメモリ上限
殆どの人はシングルサイトのはずなので、WordPressをデフォルト状態で使っているなら一般ページが40MB。管理画面が256MBという設定になっていることでしょう。
wp-config.phpでWordPress自体のメモリ上限を変更する
先述したWP_MEMORY_LIMITとWP_MAX_MOEMORY_LIMITというメモリの設定値は、wp-config.phpというファイルを編集すれば簡単に変更することができます。
編集する「wp-config.php」は公開ディレクトリ(public_html)にあるはずです。
(wp-contentフォルダやwp-adminフォルダと同じ階層に存在します)
wp-config.phpをFTPソフトで開いたら以下のコードを追記しましょう。
//WordPressのメモリ上限を変更する define('WP_MEMORY_LIMIT', '256M'); //一般ページ define('WP_MAX_MEMORY_LIMIT', '512M'); //管理画面
値は各自調整していただければと思います。
このメモリ量は許容最大値なので「一般ページ=管理画面」という値でもOKです。
普通は一般ページよりも管理画面の方がより多くのメモリ量が必要になります。
ポイント
上記のコードは、wp-config.php内の「編集が必要なのはここまでです」というコメントよりも“前”に書くように注意して下さい。
こんな感じに書けばOKです。
FTPがよく分からん!という方はレンタルサーバー会社が提供しているファイル編集ツールのようなものでwp-config.phpを編集してももちろんOKです。
メモリ上限が変更されたか確認
wp-config.phpを編集し終えたらサイトヘルスでメモリ上限を確認しましょう。
OKですね!
これで一般ページで使用できるメモリの上限が256MB。管理画面が512MBまでという設定になりました。
ポイント
【サーバーのメモリ上限値(memory_limit) ≧ WordPressのメモリ上限値】
にならないと実質意味がありません。
今回の作業のついでにサーバーの方の設定も確認しておきましょう。(↓)
サーバーの上限値の方が小くなっていると今回の作業は意味がないので注意。
WordPressのメモリ上限の目安は?
最後にWordPressに設定するメモリの設定値(memory_limit)の目安についてです。
WordPressのメモリ上限値を変更する際、メモリ値はいくらがおすすめか?
まず参考になりそうなのがPHPの推奨値です。
PHPで設定されているmemory_limitのデフォルト値は128MBです。
こう見るとWordPressのデフォルト値の40MBは少々少ないのかもしれません。
(PHP全体:128MB/WordPress:40MBなら妥当は妥当か...)
WordPressを長いこと使ってきた僕の個人的な感覚としては以下のような感じです。
メモリ上限 | 参考(個人の経験より) |
40MB(デフォルト値) | プラグインによっては処理の途中でエラーが出る or 処理が止まる |
128MB | PHPのデフォルト値なので必要十分と思われる |
256MB | 128MBが不安でもっと余裕を持ちたい方にお勧め |
512MB | 現代のサーバーならここら辺の値でも良いかも |
1G(1024MB) | やりすぎ感がある |
補足
上記の表は一般ページ(初期値40MB)、管理画面(初期値256MB)という区別はややこしくなるので抜きにしています。
メモリの上限値は、サイトで必要になる処理の最大ピーク時に使われるメモリ消費量を超えない値であればOKです。大きくしたからと言って速くはなりません。逆に上限ギリギリを狙ってもメリットはほぼありません。
正直フロントページで256MBもメモリを食われると、何があった?という感じ...
管理画面はプラグインの処理に余裕を持たせるために512MBに設定。
メモリエラーは出てませんが、今回うちのサイトはこんな感じに決めました。
WordPressにはメモリ使用量を計算できるプラグイン(↓)もあります。
-
-
WordPressのメモリ使用量も確認できるデバッグプラグイン「Query Monitor」が便利。
続きを見る
現在のピークメモリ消費量が気になる方は、こちらの記事を参考に本番環境のメモリ消費量を確認してみてもらえればと思います・w・
まとめ
以上、WordPressでWordPress自体のメモリ上限(MEMORY_LIMIT)を変更する方法でした。現在のサーバーは最低プランの共有サーバーでも十分なメモリ容量があるので、この機会にメモリ上限を引き上げておいても損はないと思います!
メモリ不足のエラーが出ていないなら、速くはなりませんが安心感は上がりますw
この記事が誰かの何かの役に立てば幸いです。ではではこのへんで・w・