Problema con il "memory size"

Buona sera a tutti,

su un sito che sto convertendo allo ZendFramework (hosting su Aruba) ho il seguente errore:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 261900 bytes) in /web/htdocs/www.xxx.com/home/application/library/Zend/Loader/PluginLoader.php on line 501

Nel php.info il  memory_limit è su 64M : non dovrebbe andar bene??

Altra cosetta, che non capisco: la linea 501 del file PluginLoader.php non esiste...??

Il framework installato è lo 1.9.7

saluti,

Davide

inviato 6 anni fa
Orix
Orix
1
X 0 X

Se vi è un include da qualche parte la riga segnalata non corrisponde alla linea del file.

Per risolvere il problema di memoria: o si modifica il file php.ini, o con un file htaccess in modo che cambi il valore del php.ini, o meglio è aggiungere: ini_set("memory_limit","12M") nella pagina che ti da l'errore.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ciao,

questa dell'include non la sapevo mica.. :-)

Modificando l'htaccess mi dà errore il server.

Ho modificato il php aggiungendo il ini_set("memory_limit","32M"): su un file ha funzionato, ma non riesco a trovare il punto in cui aggiungerlo nel PluginLoader.php

Ho aggiunto (brutalmente) l'init_set a tutti i metodi, anche del file incluso (Loader.php), ma nulla da fare...

C'è forse un modo per capire quale metodo fa bloccare il tutto?

saluti e grazie,

davide

risposto 6 anni fa
Orix
Orix
1
X 0 X
Modificando l'htaccess mi dà errore il server.

Che errore?

Puoi rivedere il tuo codice?

Se hai una richiesta esagerata di memoria c'è un qualcosa che non va...ad esempio esegui una query senza "limit"?

Puoi descrivere meglio il tuo server?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ciao,

l'hosting è il classico low-cost Aruba.. quindi, poche personalizzazioni.

Il codice l'ho preso da un altro sito "funzionante" su un server virtuale: evidentemente, in questo caso, certi erroracci di programmazione riescono a passare, mentre, nel hosting base no....

Ho "quasi risolto" con il sistema classico... ho cancellato fino a riuscir a far girare un template minimo, tanto per veder il tutto girare... adesso devo trovare l'errore... magari, come dici tu, in qualche query... :-(

grazie per l'aiuto,

saluti,

davide

risposto 6 anni fa
Orix
Orix
1
X 0 X

Non credo il problema dipenda dal templates.

E da un hosting base mi sembra strano che tu abbia a disposizione un limite di memoria  a 64 MB, ma potrei dire una fesseria...

In genere queste cose capitano quando si tenta di manipolare un qualche file o dei dati di grosse dimensioni, tipo appunto una query che preleva grandi quantità di dati dal database, saturando di conseguenza la memoria.

Prova ad ottimizzare il tuo codice e le tue query al database (che è sempre bene farle mirate per evitare troppo traffico e appesantimenti vari).

P.S. ah l'ini_set hai provato a metterlo nella pagina index.php?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ciao, io su aruba avevo problemi di memoria utilizzando mysqli come adapter. Ho risolto passando a PDO

risposto 6 anni fa
ato
ato
1
X 0 X

Ciao,

da quanto ho capito il problema è generato da un loop che si viene a creare a causa di un file bootstrap di un modulo che ho creato.

Levando il file di bootrap (/application/modules/Contact/bootstrap.php), l'applicazione gira, ma ovviamente non vengono trovate le classi con il corretto namespace (contacts_ in questo caso).

Il mio problema, adesso, è che non capisco come inizializzare correttamente il bootstrap, in quanto, nel costruttore, vuole un oggetto "application"..... ma come glielo passo, se il bootrap viene caricato in automatico?

Questo il file:

class Contacts_Bootstrap extends Zend_Application_Module_Bootstrap
{   
    public function __construct()
    {        
             
    } 
   
   protected function _initRun()
    {

    } 
   
protected function _initAutoload()
    {         
       $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'contacts_',
            'basePath'  => dirname(__FILE__),
        ));
        
        return $autoloader;
    }    
}

Che, messo così, da l'errore:

Fatal error: Declaration of Contacts_Bootstrap::__construct() must be compatible with that of Zend_Application_Bootstrap_Bootstrapper::__construct() in /application/modules/contacts/Bootstrap.php on line 2

.. consigli?

saluti,

davide

risposto 6 anni fa
Orix
Orix
1
X 0 X

Sei offtopic, apri una discussione specifica.

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili