Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    52

    Gestione Della Memoria, Approfonditamente

    Salve a tutti, ho un problema, il mio script usa troppa memoria (supera di 75 byte il consentito ). Sfortuna, ma vabè, fa niente.

    Pulendo e ottimizzando il codice, eliminando più variabili possibili e mantenendo nel frattempo una buona velocità di esecuzione, anche unsettando (( unset() )) o dichiarando le variabili nulle (( $var=null , che alcuni ritengono più veloce )). Non libero la memoria.

    Ho letto in giro su internet che unset() non libera la memoria.

    infatti se provate lo script

    Codice PHP:
    <?php $var 'ciao'; unset($var); echo $var?>
    Viene stampato comunque: ciao.

    Questo grazie al garbage collector(se non erro si chiama così). A volte è utile, ma dal mio punto di vista no.

    Non posso fare modifiche al file php.ini, non posso usare la funzione set_memory_limit() perchè sono su un hosting gratuito.

    Prego di essere professionisti e di non dire "Cambia hosting".

    la domanda è? Come faccio a usare ottimizzare la memoria?

    Sono 2 mesi che cerco risposte e l'unico modo che ho trovato è usando cURL in modo da far comunicare 2 hosting e usare il doppio della memoria. Ma rende abbastanza lento il tutto, come risolvere? Un vero Guru del PHP mi risponda per favore.

    PS: facendo il casting delle variabili, posso cambiare il loro 'peso'? quale variabile occupa meno memoria?

    Grazie anticipatamente

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    onestamente credo che tu debba fare un serio refactoring dell'applicazione web che hai scritto.
    Se una cosa amatoriale è arrivata ad usare più di 75 mega di memoria il problema è decisamente nel codice.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    52
    Dipende da qual che usi. Se hai in mente un grosso progetto e solo 18 anni. Non puoi permetterti troppo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    se il tuo codice lo ritieni già ottimizzato in maniera estrema l'unica soluzione è ricorrere ad un nuovo server.

    comunque ti consiglio seriamente un refactoring, ottimizzando il codice e ottimizzando al massimo l'utilizzo delle classi per risparmiare qua e la.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    52
    dammi qualche chicca per ottimizzare la memoria. =)

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    prova a ridurre al minimo le ripetizioni di codice e ad aumentare il decoupling del codice dividendo in maniera chiara i layer di cui l'applicazione è costituita.

    Non conoscendo la tua applicazione non posso darti suggerimenti mirati, ma un front controller o un page controller potrebbero già essere un buon inizio...

    puoi anche usare un identity map per assicurarti che il tuo codice non carichi costantemente gli stessi dati dal database.

  7. #7
    Non possiamo sapere il grado di ottimizzazione al quale tu sei arrivato, senza vedere nemmeno uno scorcio del tuo codice. Dovresti analizzare il codice, vedere cosa potrebbe essere ad occupare tutto quello spazio, postarci quel pezzo di codice e vedere come si può ottimizzare.
    I consigli possono essere banali del tipo:

    Codice PHP:
    //wrong mode
    $a="ciao ";
    $b="a tutti";
    echo 
    $a $b;

    //right mode
    echo "ciao a tutti";

    // or
    echo $a " a tutti"
    A volte si usano troppo spesso variabili anche quando non ce n'è effettivamente bisogno, ma è per pura comodità:

    Codice PHP:
    $testoDaDB"Quanto legno roderebbe un roditore se un roditore potesse rodere il legno?";
    // wrong mode
    $ahtmlentities($testoDaDB);
    echo 
    $a;

    //right mode
    echo htmlentities($testoDaDB); 
    e così via. Ma non possiamo saperlo.

  8. #8
    per cosa ti serve cURL? hai provato a implementare un piccolo sistema SOAP per la comunicazione tra i due server? chiaramente non so cosa hai implementato, ma normalmente soap è un ottimo metodo per fare comunicare due applicativi in hosting separati!

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    chumkiu hai tutta la mia stima per la citazione fatta a monkey island 2

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    52
    E' un parser. che funziona associato a worspress.

    come librerie uso simplehtmldom e rsslib.

    Codice PHP:
    <?php

    function PostRLSLog($anchors,$cat){
    $title='';$text2='';$commenttext='';
    $links $anchors->href;
    $anchors=(unset)null;
    $html file_get_html($links);
    $title1 $html->find('h3[class="entrytitle"]');
    $title$title1->plaintext;
    $title1=(unset)null;
    $text $html->find('div[class="entrybody"]');
    $comments $html->find('div[class="commenttext"]');
    if (
    trim($title) <> '' ){
    $post['post_title']= trim($title);
    $post['post_content'] = $text->innertext.'
    '
    .$comments->innertext.'
    thanks to [i]rlslog.net[/i]'
    ;
    $post['post_status'] = 'publish';
    $post['post_author'] = 1;
    $post['post_category'] = $cat
    $post['tags_input']= str_replace(chr(32),',',$title.',multihost,direct download,music,albums,free,gratis,divx,english,megaupload,rapidshare');
    $html->clear();
    $title=(unset)null;
    $comments=(unset)null;
    $text2=(unset)null;;
    return 
    wp_insert_post($post);
    }}

    function 
    Rls_grub_page($type){

    include_once(
    'simple_html_dom.php');
    include_once(
    'rsslib.php');

    switch(
    $type){

    /*

    switch di 2 variabili: $rsslinck e $cat, stringhe

    */
    }


    $post=array();
    $rss RSS_Links($rsslink10); 
    $xml str_get_html($rss); 
    $rss=(unset)null;
    $anchors $xml->find('a');
    $xml->clear();
    foreach (
    $anchors as $anchors1){

    if (!empty(
    $anchors)){
     
    PostRLSLog($anchors1,$cat); 
     }
    }
    echo 
    'finito';
    }

     
    ?>

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 © 2025 vBulletin Solutions, Inc. All rights reserved.