Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    Fatal error Allowed memory size, uso array globale limite 128MB, uso memoria in generale

    Ciao a tutti,

    ho la esigenza di utilizzare un array GLOBALE che contiene degli indici alfanumerici e come valori del codice javascript, utilizzo programmazione ad oggetti con pattern MVC
    Quando utilizzo questo sistema (metodo che crea indice/valore in un array globale) la memoria da 18MB sale al limite del server wamp, ovvero 128MB(il server wamp lo utilizzo non in produzione, per le prove).
    L'array si genera durante il rendering della pagina e viene recuperato prima del print finale della pagina stessa.
    Pensavo di risolvere con l'utilizzo di una tabella temporanea nel DB, se è più lento non mi interessa, l'importante è che non mi dia problemi di memoria, è codice che esegue solo l'amministratore della pagina web.

    Prima di tutto, uno script php quanta memoria dovrebbe utilizzare normalmente, sono troppi anche 18MB o è normale?
    Esiste un altro metodo per risolvere il problema da me esposto?

    Qualsiasi suggerimento è ben accetto!

    Grazie,
    Roberto

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Ho trovato il problema, un punto prima di un uguale che mi incrementava esponenzialmente l'uso della memomoria.
    Comunque, può essere cosiderato normale 18MB di memoria per esecuzione dello script che mi restituisce la pagina?

    ...lo vedo utilizzando memory_get_peak_usage() in vari punti.

    Grazie,
    Roberto

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Dipende da che cosa fa lo script e come lo fa, di quanti dati ha bisogno per generare la pagina ecc..., senza sapere nulla non si può rispondere, può essere una cattiva ottimizzazione del codice come una cosa normale perché ha effettivamente bisogno di molti dati.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    esiste qualche strumento, che tu sappia, che mi permetta di visualizzare l'utilizzo della memoria in vari punti dello script?
    Utilizzo WAMP per sviluppo locale che è una replica di quello che ho in produzione

    Un'altra cosa, in fase di rendering effettuo varie operazioni sulla vista da restituire all'utente, per ottimizzare la memoria, è meglio il secondo codice che espongo, vero?
    Primo codice, ad ogni linea creo una nuova variabile

    codice:
    $html='<span>#a#</span>
    $html1=str_replace('#a#','ciao',$html);
    return $html1;
    Secondo codice, riassegno sempre alla stessa variabile:
    codice:
    $html='<span>#a#</span>
    $html=str_replace('#a#','ciao',$html);
    return $html;
    Ovviamente moltiplicato per una quindicina di processi, il primo codice, fa aumentare di molto l'utilizzo della memoria, giusto?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Roby secondo me ti conviene usare il profiler di xdebug per capire cosa è che ti fa salire così tanto il consumo di ram.
    Su windows non l'ho mai usato ma credo che funzioni bene.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Roby secondo me ti conviene usare il profiler di xdebug per capire cosa è che ti fa salire così tanto il consumo di ram.
    Su windows non l'ho mai usato ma credo che funzioni bene.
    Ciao, grazie della risposta, lo installerò!

    Per il momento ho usato in vari punti dell'applicazione memory_get_peak_usage()
    Con questo ho potuto notare che il consumo medio di ram delle pagine si aggira intorno ai 4MB, i 18MB li raggiungo solo quando utilizzo delle variabili globali che utilizzo per mettere momentaneamente codice javascript(ma è una pagina che utilizza solo l'amministratore).

    Ritornando all'utilizzo medio, ovvero 4MB, ho notato che c'è un incremento di circa 1.5MB facendo un include del controller principale, che è un file che contiene 6000 linee di codice e pesa fisicamente 250KB.
    Includo verie classi e file necessari per il funzionamento dello script:
    Prima di includere i file/classi l'utilizzo della memoria è di 0,25MB
    Dopo l'inclusione di tutti i file/classi l'utilizzo della memoria arriva a 2.79MB
    Cosa ne pensi?

    Grazie,
    Roberto

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Beh sono valori normalissimi, io non mi preoccuperei più di tanto.
    Considera anche che è un pannello di amministrazione, quindi immagino che non avrà un enorme traffico.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Perfetto, ti ringrazio molto, adesso sono più tranquillo.
    Comunque mi interessa molto il tema dell'utilizzo della memoria da parte di PHP, vorrei approfondire meglio per ottimizzare il mio codice, conosci qualche sito che lo spieghi bene?
    ...anche in inglese.

    Grazie,
    Roberto

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Non saprei, non è una cosa che ho mai approfondito nello specifico, anche perché solitamente con php non ho avuto grossi problemi di utilizzo elevato di memoria.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.