Domanda

sto affrontando il "Errore irreversibile: Memoria (assegnato 30.408.704) (tenta di allocare 24 byte) ..." comune PHP errore fatale. Pagine serviti tramite Apache non espongono questo comportamento.

Ho provato quanto segue:

  1. Aumentare il memory_limit nel file php.ini a un valore molto più grande.
  2. Aumentare memory_limit all'interno dello script stesso tramite chiamate a ini_set('memory_limit', -1), ini_set('memory_limit', '-1'), ini_set('memory_limit', 100000000), ini_set('memory_limit', '128M'), ecc.
  3. unset()ing array e gli oggetti necessari per incoraggiare il garbage collector per liberare memoria.
  4. Come contattare l'host web. Essi sono normalmente molto capace e competente, ma non sono stati in grado di aiutarmi con questo problema sia.
  5. Ho provato in modo esplicito tra cui un file php.ini utilizzando il flag della riga di comando -c di selezionare manualmente i file specifici php.ini con diversi valori.
  6. Ho provato a impostare memory_limit in php.ini usando entrambi i numeri grezzi di byte e valori come 64M, 128M, ecc.
  7. Il fornitore di hosting è stato in grado di eseguire lo script come root senza problemi, ma sperimenta lo stesso problema lo faccio quando si esegue utilizzando il mio utente non root. Forse c'è un qualche tipo di problema di autorizzazioni coinvolti?

Indipendentemente da ciò che cerco, il messaggio di errore è lo stesso. Sembra che i miei script di riga di comando ignorano le modifiche al memory_limit.

Tendo a cercare di assicurarsi che i miei script sono efficiente della memoria, ma attualmente sto bisogno di analizzare grandi quantità di HTML tramite Simple HTML DOM ed è nel parser che sto vivendo fuori problemi di memoria. Nel tentativo di ridurre l'occupazione di memoria della sceneggiatura, ho provato ad utilizzare DOMDocument . Questo non aiuta. Infatti, l'errore di memoria è ora attivato altrove nello script.

La mia domanda: qualcuno ha sperimentato questo o un problema simile? Avete suggerimenti?

Grazie.

È stato utile?

Soluzione

Si scopre che il problema è stato causato da coperture di protezione bomba forcella essendo abilitati sul server che ponendo un limite di memoria duro su tutti gli script della riga di comando. Questo era stato abilitato dal mio host web senza la mia conoscenza.

Altri suggerimenti

PHP CLI può essere utilizzando un diverso php.ini al vostro php apache. provare una phpinfo() e controllare la sua utilizzando il file ini si pensa il suo utilizzo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top