「メモリ不足」というエラーを回避するにはどうすればよいですか?


7

私は現在Drupal 7を使用しており、次のモジュールをインストールし、すべて最新のバージョンに更新しました。

  • ビュー-7.x-3.0-beta3
  • CTools-7.x-1.0-alpha4
  • パネル-7.x-3.0-alpha3
  • ルール、ACL、高度なフォーラム、フォーラムアクセス、ユーザーポイント、BUEditor

「PHP Fatal Error:Out of memory」というメッセージが表示され続けます。サーバーの制限は、プロバイダーが許可する最大値(32 MB)です。これらのエラーは主にモジュールページを操作するときに表示されますが、パスワードを更新したりノードを編集したりしようとするユーザーにも表示されます。

したがって、メモリ使用量を減らす方法について何かアドバイスはありますか?

PS:これらのエラーのほとんどにビューとビュープラグインの.incファイルが含まれていることに気づきました。ただし、コアモジュールとシステムの.incファイルにも関係があります...必要に応じて、そこにコピーすることもできます。

回答:


6

この場合、本当にできることは多くありません。Drupal 7にはかなりのメモリが必要です。ビューやパネルなども同様です。

128MB以上のホスティングプランにアップグレードできない場合は、少なくとも次のモジュールが無効になっていることを確認してください。

  • 更新マネージャー
  • データベースのロギング
  • フィールドUI
  • ビューUI
  • パネルインプレイスエディタ
  • その他の「UI」モジュール

ローカルで開発を行い、バージョン管理と機能を使用して、製品ボックスを更新します。


2
ビューのUIが必要なのは、既存のビューを編集するとき、または新しいビューを追加するときだけです。通常の使用では、ビューのUIは不要であり、そのモジュールが無効になっていてもビューは正常に動作します。
kiamlaluno

1
正確には、同じことが他のどの「UI」モジュールにも当てはまります。それらは開発にのみ必要です。フィールドは意志のコンテキスト、など。ので、UIなしで動作します
アレックス・ウェーバー

4
ただし、ビュー(UIではない)自体は現在、巨大なフットプリントを持っています。私は最近Drupalのメモリフットプリントとの戦いに取り組んでおり、ビューはスキーマキャッシュをロードし、ビューを表示するすべてのページに独自のデータキャッシュをロードしていることに気付きました。これは、少数のモジュールがインストールされているサイトでは数メガバイトを意味します(テストインストールでは約4MB)。
Berdir

私は機能を使用するためのあなたの推奨に同意する必要があります-そのモジュールは巨大なメモリを独占しています。更新フックを使用して構成変更をデプロイする方がはるかに優れています。
フェリックスイブ

事例として、共有ホスティングで既存のD7サイトを設定し、ビューを使用して多くのメモリの問題が発生した後、PHPのバージョンを7から5.6に変更すると非常に役立つことがわかりました。原因は定かではありませんが、1024Mのメモリを使用できるようになりましたが、ビューに16個のアイテムを表示してもメモリが不足していました。
jammypeach

4

Drupalのシステム要件に記載されているように、Drupal Core自体を実行するには32Mが必要です。メモリを増やさずにコントリビュートされたモジュールを追加することは、このエラーが発生する確実な方法です。

サーバーの最大数が32Mしかない場合は、新しいホスティングを取得するときです。


悪いことは、私がそれを変更したことです...私は少なくとも1年間はそれで行き詰まっていると思います......お奨めはこれをチェックしてください。:(
nyoz '28年

ところで、私のホストは1&1 Franceです。私はいくつかのワードプレスサポートフォーラムで、最近phpの制限を90Mbにアップグレードしたことを読みました。月曜日に電話します...!;)
nyoz、

2

前述のとおり、実際には128Mが必要です。もう1つの注意点は、イメージスイートが機能している場合、特定の状況では少なくとも96Mが必要であることを(少なくともDrupal 6では)頻繁に思い出させることです。

32Mはそれをカットするつもりはありません。


0

Viewsモジュールの使用が最大の問題だと思います。

カスタムクエリでビューを使用するすべてのページを書き換え、ビューモジュールを削除します。その間、ルールも削除し(ここでも、すべてのロジックをコードに移動します)、メモリの使用量はすぐに減少します。

また、テンプレートファイルを作成してプリプロセスフックを使用するだけで、Panelがメモリを節約する必要がなくなります。

これらは簡単または迅速な手順ではなく、Drupal、MySql、およびPHPに関する深い知識が必要ですが、パフォーマンスが最優先事項である場合、これが最良のソリューションです(32Mのメモリで実行されます)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.