Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    script e problemi di memoria

    Ciao, questo e' l'errore che mi da' il mio script

    codice:
    Fatal error: Allowed memory size of 8388608 bytes exhausted 
    (tried to allocate 3193043 bytes) 
    in /home/urs/dir/index-help.php on line 35
    Si tratta di uno script abbastanza semplice, che pero' fa una cosa mostruosa...

    ho memorizzato in un file <fileindex.txt> 8768 url di documenti HTML, lo script deve leggere ogni linea, e con la funzione file_get_contents() memorizzare il contenuto di ogni URL in una stringa e metterlo dentro un database. Ho anche splittato il file in pezzi da 200 linee, ma il risultato non cambia.

    Ho quindi due domande:

    1) come faccio ad evitare che mi dia quell'errore?
    2) sto facendo la cosa giusta? c'e' un modo meno oneroso per ottenere lo stesso risultato?

    Lo script

    Codice PHP:
    #file che contiene le url
    $what "fileindex.txt";

    #apro il file e ottengo in $buffer la URL
    $fd fopen($what"r");
    while (!
    feof ($fd)) {
    $url fgets($fd4096);

    $url  str_replace("./","",$url );
    $url  "http://127.0.0.1/home/urs/dir/".$url;
    $url  str_replace("\n","",$url );


    # corpo del documento
    $body file_get_contents($url);
    # data
    $data date("d-m-Y");

    #aggiungi
    $sql "INSERT into myhelp (url,corpo,data)";
    $sql.= "VALUES ('$url', '$body', '$data')";
    mysql_query($sql$db);


    echo 
    "

    [b]Ho aggiunto[/b]
    "
    ;
    echo 
    $url."</p>";
    }
    fclose($fd); 
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  2. #2
    potresti provare a liberare le risorse associate alle query (al limite dopo ogni singola query):
    codice:
    $resid = mysql_query($sql, $db);
    mysql_free_result($resid);
    I'm your dreams, make you real... I'm your eyes when you must steel...I'm pain when you can't feel...sad but true !

  3. #3
    uhm... cosa significa

    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource

    ?????
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  4. #4
    Originariamente inviato da Mutato
    uhm... cosa significa

    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource

    ?????
    Con mysql_query e INSERT & C. non viene rilasciato un id_resource, ma solo TRUE/FALSE quindi $resid contiene solo quello e non un identificatore di risorsa.

    Il tuo problema di memoria non e' causato da mysql, ma dal complessivo delle risorse che impegni.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    C'e' modo di risolvere?
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  6. #6
    Originariamente inviato da Mutato
    C'e' modo di risolvere?
    Dipende dalle risorse impegnate...

    intanto tu potresti ottimizzare il tuo script... per esempio togliendo dal while tutto quello che e' inutile replicare piu' volte...

    # data
    $data = date("d-m-Y");

    $sql = "INSERT into myhelp (url,corpo,data)";

    Poi .... quanto sono lunghi i file che porti in $body... ???

    Nel caso dividi il file "fileindex.txt" in due...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    ok per la data, ma $sql devo lasciarlo nel ciclo... ne no cosa memorizzo????

    Il body sono documenti HTML, di solito documentazione linux, howto e cose del genere...
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

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.