Ho uno script php che utilizza Doctrine2 e Zend per calcolare alcune cose da un database e inviare alcune e-mail per 30.000 utenti.C'è un modo per sapere quali oggetti e quanti ne ho in memoria?
Il mio script sta perdendo memoria e voglio sapere quali sono gli oggetti che stanno consumando quella memoria, e se è possibile chi sta mantenendo un riferimento a loro (quindi non permettendo loro di essere rilasciati).
Im usando PHP 5.3.x, quindi i riferimenti circolari pianura non dovrebbe essere il problema.
Ive ha provato a utilizzare le funzionalità di traccia xdebug per ottenere mem_delta senza successo (troppi dati).
Ive provato manualmente aggiungendo memory_get_usage prima e dopo le funzioni importanti. Ma l'unica conclusione che ho ottenuto è stata la perdita di circa 400k per utente e di 3000 utenti che mi danno il 1 GB che ho a disposizione.
Ci sono altri modi per conoscere dove e perché la memoria sta perdendo? Grazie
Bene, gli utenti dovrebbero essere processati uno dopo l'altro, ci dovrebbero essere solo 400k di memoria necessari! Se ogni ciclo aumenta l'utilizzo della memoria, qualcosa nel tuo design è seriamente sbagliato! – markus
Bene, ho un ciclo che chiama una funzione che fa quanto segue: Ottieni le informazioni per l'utente, calcola (con la memorizzazione inclusa), invia posta, rilascia risorse. E ogni utente è indipendente l'uno dall'altro, quindi le risorse non vengono rilasciate –
Hai dato un'occhiata al gestore di entità di doctrine? Non ho molta familiarità con la dottrina ma potrebbe eventualmente memorizzare riferimenti a entità/proxy/... per tutti gli utenti 30k. – Fge