Comment éviter l'erreur «mémoire insuffisante»?

7

Je travaille actuellement avec Drupal 7, et j'ai installé les modules suivants, tous mis à jour vers leur dernière version respective:

  • Vues - 7.x-3.0-beta3
  • CTools - 7.x-1.0-alpha4
  • Panneaux - 7.x-3.0-alpha3
  • Rules, ACL, Advanced forum, Forum Access, User Points, BUEditor

Je reçois toujours "PHP Fatal Error: Out of memory." La limite de mon serveur est à son maximum autorisé par mon fournisseur (32 Mo). Ces erreurs apparaissent principalement lors de l'interaction avec la page des modules, mais elles apparaissent également pour tout utilisateur qui essaie de renouveler son mot de passe ou de modifier des nœuds.

Ainsi, auriez-vous des conseils sur la façon de réduire l'utilisation de la mémoire?

PS: j'ai remarqué que la plupart de ces erreurs incluent des vues et des vues plugins .inc fichiers. Mais cela concerne également les fichiers .inc des modules et du système de base ... Je pourrais en copier certains si vous le souhaitez.

nyoz
la source

Réponses:

6

Il n'y a vraiment pas grand chose à faire dans ce cas. Drupal 7 nécessite assez de mémoire, tout comme les vues, les panneaux, etc.

Si la mise à niveau vers un plan d'hébergement où vous avez au moins 128 Mo n'est pas une option, je m'assurerais au moins que les modules suivants sont désactivés:

  • Gestionnaire de mise à jour
  • Journalisation de la base de données
  • Interface utilisateur de champ
  • Vues UI
  • Editeur de panneaux sur place
  • Tout autre module "UI"

Faites votre développement localement et utilisez le contrôle de version et les fonctionnalités pour mettre à jour votre box de production.

Alex Weber
la source
2
Pour remarquer que l'interface utilisateur de vues n'est nécessaire que lors de la modification d'une vue existante ou de l'ajout d'une nouvelle vue; pour l'utilisation normale, Views UI n'est pas nécessaire et Views fonctionnera normalement même lorsque ce module est désactivé.
kiamlaluno
1
exactement, il en va de même pour tous les autres modules "UI". Ils ne sont nécessaires qu'au développement. Les champs fonctionneront sans l'interface utilisateur, tout comme le contexte, etc.
Alex Weber
4
Cependant, les vues (et non l'interface utilisateur) elles-mêmes ont actuellement une énorme empreinte. J'ai récemment essayé de lutter contre l'empreinte mémoire de Drupal et j'ai remarqué que les vues chargeaient le cache de schéma et son propre cache de données sur chaque page qui affiche une vue. Cela peut facilement signifier plusieurs mégaoctets sur un site avec quelques modules installés (environ 4 Mo sur mon installation de test).
Berdir
Je ne suis pas d'accord avec votre recommandation d'utiliser des fonctionnalités - ce module est un énorme porc de mémoire. Il serait préférable d'utiliser des hooks de mise à jour pour déployer des modifications de configuration.
Felix Eve
Pour l'anecdote, après avoir mis en place un site D7 existant sur l'hébergement partagé et rencontré de nombreux problèmes de mémoire à l'aide de vues, j'ai trouvé que le changement de la version PHP de 7 à 5.6 a grandement aidé. Je ne suis pas sûr de la cause, mais j'avais atteint le point de permettre 1024 Mo de mémoire et il était toujours en cours d'exécution tout en affichant 16 éléments dans une vue.
jammypeach
4

Comme indiqué dans la configuration système requise de Drupal, Drupal Core lui-même a besoin de 32 Mo pour fonctionner. L'ajout de modules contribués sans augmenter la mémoire est un moyen infaillible de rencontrer cette erreur.

Si le maximum de votre serveur n'est que de 32 Mo, il est temps d'obtenir un nouvel hébergement.

tim.plunkett
la source
La mauvaise chose, c'est que je viens de le changer ... Je pense que je suis coincé avec ça pendant au moins un an ... Je dois vérifier ça. :(
nyoz
BTW, mon hébergeur est 1 & 1 France. J'ai lu dans certains forums de support wordpress qu'ils ont récemment mis à niveau leur limite php à 90 Mo. Je les appellerai lundi ...! ;)
nyoz
2

Comme mentionné, l'essentiel est que vous avez réellement besoin de 128 Mo. Un autre point à noter est que si vous faites fonctionner la suite d'images, cela nous rappelle fréquemment (dans Drupal 6 au moins) qu'au moins 96M sont nécessaires dans certaines circonstances.

32M ne va tout simplement pas le couper.

NikLP
la source
0

Je pense que l'utilisation du module Vues est votre plus gros problème.

Réécrivez toutes les pages qui utilisent des vues avec des requêtes personnalisées, supprimez le module des vues et pendant que nous y sommes, supprimez également les règles (encore une fois, déplacez toute la logique vers le code) et votre utilisation de la mémoire diminuera.

De plus, la simple écriture de fichiers de modèle et l'utilisation de crochets de prétraitement supprimeront le besoin de panneaux d'économiser encore plus de mémoire.

Ce ne sont pas des étapes faciles ou rapides à prendre et nécessitent une connaissance approfondie de Drupal, MySql et PHP, mais si les performances sont la priorité numéro un, c'est la meilleure solution (et fonctionnera sur 32 Mo de mémoire).

Felix Eve
la source