Come evitare l'errore "memoria insufficiente"?


7

Attualmente sto lavorando con Drupal 7 e ho installato i seguenti moduli, tutti aggiornati alla rispettiva ultima versione:

  • Visualizzazioni: 7.x-3.0-beta3
  • CTools - 7.x-1.0-alpha4
  • Pannelli - 7.x-3.0-alpha3
  • Regole, ACL, Forum avanzato, Accesso al forum, Punti utente, BUEditor

Continuo a ricevere "Errore irreversibile PHP: memoria insufficiente". Il limite del mio server è massimo consentito dal mio provider (32 MB). Tali errori compaiono principalmente quando interagiscono con la pagina dei moduli, ma vengono visualizzati anche per qualsiasi utente che tenta di rinnovare la propria password o di modificare nodi.

Quindi, avresti qualche consiglio su come ridurre l'utilizzo della memoria?

PS: ho notato che la maggior parte di questi errori include viste e file plug-in di viste. Ma riguarda anche i file .inc dai moduli core e dal sistema ... Potrei copiarne alcuni se lo desideri.

Risposte:


6

Non c'è davvero molto che puoi fare in questo caso. Drupal 7 richiede un bel po 'di memoria e anche viste, pannelli, ecc.

Se l'aggiornamento a un piano di hosting in cui hai almeno 128 MB non è un'opzione, mi assicurerei almeno che i seguenti moduli siano disabilitati:

  • Gestione aggiornamenti
  • Registrazione database
  • UI di campo
  • Visualizza l'interfaccia utente
  • Editor sul posto dei pannelli
  • Qualsiasi altro modulo "UI"

Esegui il tuo sviluppo localmente e usa il controllo versione e le funzionalità per aggiornare la tua scatola di produzione.


2
Notare che l'interfaccia utente di Views è necessaria solo quando si modifica una vista esistente o si aggiunge una nuova vista; per l'uso normale, l'interfaccia utente di Views non è necessaria e Views funzionerà normalmente anche quando quel modulo è disabilitato.
kiamlaluno

1
esattamente, lo stesso vale per qualsiasi altro modulo "UI". Sono necessari solo per lo sviluppo. I campi funzioneranno senza l'interfaccia utente, così come il contesto, ecc.
Alex Weber,

4
Tuttavia, le viste (non l'interfaccia utente) hanno attualmente un'impronta enorme. Ho lavorato di recente per cercare di combattere l'impronta di memoria di Drupal e ho notato che le viste carica sia la cache dello schema che la sua cache di dati su ogni pagina che visualizza una vista. Ciò può facilmente significare più megabyte su un sito con alcuni moduli installati (circa 4 MB sulla mia installazione di prova).
Berdir,

Non sono d'accordo con la tua raccomandazione di utilizzare le funzionalità: quel modulo è un enorme maiale di memoria. Sarebbe molto meglio usare gli hook di aggiornamento per distribuire le modifiche alla configurazione.
Felix Eve,

aneddoticamente, dopo aver impostato un sito D7 esistente sull'hosting condiviso e aver incontrato molti problemi di memoria usando le viste, ho trovato molto utile cambiare la versione di PHP dalla 7 alla 5.6. Non ero sicuro della causa, ma ero arrivato al punto di consentire 1024 M di memoria e si stava ancora esaurendo mentre visualizzavo 16 elementi in una vista.
jammypeach

4

Come elencato nei Requisiti di sistema di Drupal, Drupal Core stesso ha bisogno di 32M per funzionare. L'aggiunta di moduli contribuiti senza aumentare la memoria è un modo infallibile per riscontrare questo errore.

Se il massimo del tuo server è solo 32M, è tempo di ottenere un nuovo hosting.


La cosa brutta è che l'ho appena cambiato ... Penso di esserne rimasto bloccato per almeno un anno ...... Devo dare un'occhiata. :(
nyoz,

A proposito, il mio hoster è 1 & 1 France. Ho letto in alcuni forum di supporto di wordpress che hanno recentemente aggiornato il loro limite di php a 90 Mb. Li chiamerò lunedì ...! ;)
nyoz,

2

Come detto, la linea di fondo è realisticamente bisogno di 128 milioni. Un altro punto da notare è che se la suite di immagini funziona, ciò ci ricorda spesso (almeno in Drupal 6) che in determinate circostanze sono necessari almeno 96 M.

32M non ha intenzione di tagliarlo.


0

Penso che l'utilizzo del modulo Views sia il tuo problema più grande.

Riscrivi tutte le pagine che utilizzano le visualizzazioni con query personalizzate, rimuovi il modulo delle visualizzazioni e mentre ci occupiamo anche di rimuovere le Regole (di nuovo, sposta tutta la logica nel codice) e l'utilizzo della memoria diminuirà.

Inoltre, la semplice scrittura di file modello e l'utilizzo di hook di preelaborazione rimuoveranno la necessità di risparmiare ancora più memoria per i pannelli.

Questi non sono passaggi facili o rapidi da eseguire e richiedono una conoscenza approfondita di Drupal, MySql e PHP, tuttavia se le prestazioni sono la priorità numero uno, questa è la soluzione migliore (e funzionerà con 32 M di memoria).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.