メモリサイズ オーバー、ACF Pro、フィールド数の限界値?

ワードプレスPHPアドバンスドカスタムフィールドカスタムフィールドサーバー

ACF Proのフィールドを増やした途端、エラーが頻出。

Fatal error: Allowed memory size of 〇〇〇 bytes exhausted (tried to allocate 〇〇〇 bytes) in wpフォルダ/wp-includes/meta.php on line 1078

発生状況

  • 柔軟コンテンツの中に柔軟コンテンツが入れ子になったフィールドグループがある。
  • フィールド数は200オーバー
  • テストサイトのトップなので、実験で追加したオプション、使わなくなって放置したオプション等、多数

上記エラーのほか、フィールドの表示スタイルが「WP標準」になったり「シームレス」になったり、「タブ」フィールドの表示が崩れたり。

 

エラーが出なくなるまでmemory_limit、post_max_sizeあたりを増やしていく、という対応をする場合が多いと思いますが、今回はデモサイトで起きたので原因を探ってみた、というお話。

対応

  1. 有効プラグインを減らす ⇒ ✖
    構築時のみに使うようなもの、更新が古く不安定なものを無効化してみるも、状況は変わらず。
  2. フィールド数を減らす ⇒ ✖
    エラー発生前と同じ数にしてみるも変わらず。
  3. ページデータのリセット ⇒ 〇
    エラーの出る固定ページを削除し、新規ページで同じコンテンツを再現したところ、エラーは出なくなった。更新も早くなった気がする。

明確な答えは出ませんでしたが、

結局、ページデータ自体が膨らみすぎてしまった、ということのようです。

ACF Proのフィールド数はそのきっかけに過ぎなかったのかな、と。

 

いろいろ実験・検証するデモサイトならではのエラーで、

  • お客様サイトで発生することはあまりない
  • 万が一起きたら新規ページに差し替えてページデータをリセットする(idが変わっちゃうけど)
  • フィールド数はほどほどに!

でOKかな?という暫定的結論となりました。

 

2021.03.13 追記 – 固定ページを削除できない

「エラーの出る固定ページを削除し、」と書いていますが、正確にはゴミ箱に入れただけでした。

後で「完全に削除する」を実行したところ、タイムアウトでまたもや「Fatal error~」。削除できない。

編集はできるので、復元してから本文やカスタムフィールド値を削除してもダメ。

 

「データベースを直接消すか、、、探すの大変だな。」と思い試行錯誤。

プラグイン「Post Type Switcher」で固定ページ⇒カスタム投稿タイプに変換したところ削除成功。

データがきれいに消えたかはわからないし、問題解決ではないのですが、ひとまずお手軽に問題回避。