Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    A questo fatal error c'è soluzione?

    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3261838 bytes) in C:\Programmi\EasyPHP 3.0\www\programmabiganalisi.php on line 143

    A questo fatal error c'è soluzione?
    E che significa?

    Grazie grazie grazie

    ps: il file che lo genera... per completare la sua esecuzione impiega necessariamente molto tempo... c.a 10 ore ma calcolando quanto ci mette un suo analogo per un'analisi più piccola il tempo risulterebbe corretto e credo che all'interno non vi siano errori di cod... quindi non saprei proprio dove mettere le mani... per rimediarvi...


  2. #2

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Ho già guardato dove mi hai indicato

    Grazie

    Ho aumentato memory limit del mio php.ini da 128 M a 1000 M (in quanto il pc dove lo faccio girare ha 4 GB di RAM).

    dopo 24 h che girava con google chrome all'indirizzo locale 127.0.0.1 del mio webserver mi ha segnalato analogamente a prima ma non in modo uguale questa dicitura:

    Fatal error: Allowed memory size of 1048576000 bytes exhausted (tried to allocate 3261838 bytes) in C:\Programmi\EasyPHP 3.0\www\programmabiganalisi.php on line 143

    Allorchè come ultimo passo ho ritentato a farlo girare impostando però il memory limit del php.ini a -1 perchè mi sembra di aver letto che questo è il modo per lasciare via libera allo script per avere quanta memoria RAM gli necessita...

    Credi possa bastare?

    Grazie

  4. #4
    IMHO sarebbe molto più logico cercare di capire quale parte del codice consuma così tante risorse ed ottimizzarlo di conseguenza.

  5. #5
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    ok ora aspetto che finiscano i 2 ultimi tentativi...

    E poi eventualmente posterò il cod per cercare di inviduare insieme l'eventuale ciclo o pezzo di cod che succhia risorse... Comunque sia credo che sia un problema non troppo risolvibile in tal senso in quanto forse è solo attribuibile ai molti dati analizzati...

    sto parlando di 4536 righe di un file1.txt confrontate ognuna con 117.480 righe di un file2.txt

    in sostanza ad ognuna di queste righe del file1.txt composto da 5 elementi impongo una verifica
    di almeno un elemento presente nelle righe del file2.txt composta ognuna da 3 elementi...
    Nel caso la verifica sia positiva una variabile r apposita viene settata a 0 mentre in caso negativo
    questa variabile si incrementa di 1 e questo per tutti i 90 numeri possibili.

    Il mio script inoltre mi salva ogni valore max trovato e me lo ordina in ordine crescente

    Non so se sia possibile fare tutto questo impiegando poche risorse e poco tempo da parte del pc... Comunque sia se mi sbaglio di grosso ben venga! Sono tuttorecchi.. anzi tuttocchi in questo caso per carpire al volo la validissima alternativa propostami...



    Ancora grazie per i tuoi utili consigli e le tue dritte


  6. #6
    Ti consiglio per risparmiare memoria di fare ricaricare la pagina con javascript eseguendo un numero limitato di azioni a ogni pagina.

  7. #7
    non è necessario fare il reload tramite javascript, basta scrivere bene il codice

    se consideriamo 200 byte a riga, quindi 200 caratteri, dipende da che ci sta dentro, ma consideriamolo come media viene fuori che servono fino a 22,40mb di memoria per il secondo file e 885kb per il primo file. Quindi i dati sono circa 24mb (abbondiamo) se poi ci mettiamo un 4 mb di dati aggiuntivi di php di vario genere [ad esempio un array con dentro le righe, o un array di array] siamo a 28 mb (ed abbiamo abbondato)

    @adileo
    posta la dimensione complessiva dei file e la procedura logica che esegui per fare il confronto.

    se non è un problema di dimensione dei file è possibile/probabile che si possa ottimizzare seriamente il tutto

    considera che se devi fare i confronti la cosa più conviente, sicuramente, è metere in cache il file più piccolo e confrontare riga per riga la singola riga letta dal file più grande ... però è solo un ipotesi, tutto dipende da quello che fa il programma ma ad esempio, seguendo questo procedimento, il software non dovrebbe consumare più di un paio di mb e l'esecuzione dovrebbe durare poco e niente.

    PS: ma per caso ti carichi in memoria tutti e due file e poi li splitti e poi li risplitti e simili senza mai deallocare le variabili precedenti?

  8. #8
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Si invece temo che si tratti proprio dell'ultima possibilità che hai postato...

    Comunque sia questo è il mio codice.
    Se riesci a velocizzarlo sei un mito e ti ringrazio infinitamente
    Per adesso con questo script sto facendo soffrire.. un pc abbastanza potente con 4 gb di ram e 4 processori

    Se... te ne sarà molto riconoscente anche lui... credo..


    Codice PHP:

    <?php 

    $apro 
    fopen("iniziorangedeciso.txt""r");
    $iniziorangeok fread($aprofilesize("iniziorangedeciso.txt")); 
    $chiudo fclose($apro);

    print 
    "

    valore recuperato da file iniziorange.txt: "
    ;
    print 
    "<font color=red>[b]";
    print 
    $iniziorangeok;
    print 
    "[/b]</font>

    "
    ;


    $iniziorange=$iniziorangeok;
    $iniziorange $iniziorange+0


    print 
    "

    "
    ;
    print 
    "STEP1";
    print 
    "

    "
    ;

    $ultimiritardi=array();

    for (
    $w=0$w<117480$w++) {


    $combinazione="";
    $ottina="";
    $ritardo="";
    $zero=0;
    $arraystringa="";



    $annifile ('anni.txt');


    $newarray=array();

    foreach(
    $anni as $stringa) {
    //print "$stringa-";
    }


    array_push($newarray,$stringa);
    echo 
    '</pre>';
    $bari = array();
    foreach(
    $newarray as $stringa) {
      if (
    preg_match('#BA#',$stringa)) {
      
    $bari[] = $stringa;
       }    
    }


    if (
    $iniziorange=="") {

        
    $iniziorange=0;
        
       }    

    $tutteleottinefile ('tuttiterni.txt');

      
    $newarray=array();
    foreach(
    $tutteleottine as $stringa) {

    array_push($newarray,$stringa);

    }

    echo 
    '<pre>';              

    echo 
    '</pre>';
    $bari = array();
    foreach(
    $newarray as $stringa) {

      
    $bari[] = $stringa;
       
    }



    for (
    $i=0$i<count($bari); $i++) {
    }


    $numerodicasi=count($bari);

    $finerange $numerodicasi;

    $tuttelecombinazioni=array();

    for (
    $c=0$c<117480$c++) {


    settype ($bari[$c], "string");
    $stringadalavorare $bari[$w];


    $dsubstr("$stringadalavorare"0); 

    $pulito =  trim($d);


    $array explode(" ",$pulito);


    for (
    $i=0$i<count($array);$i++) {
    settype ($array[$i], "string");
    $stringa1$array[$i];


    $array2 explode("\t",$stringa1);
    $arraystringa=implode(",",$array2);


    array_push($tuttelecombinazioni,$arraystringa);



    $estrazionifile ('estrazioni.txt');


    $newarraybari=array();
    foreach(
    $estrazioni as $stringa) {
    if (
    preg_match('#BA#',$stringa)) { 

    array_push($newarraybari,$stringa);

    }
    }

    $bari = array();
    foreach(
    $newarraybari as $stringa) {
    if (
    preg_match('#BA#',$stringa)) {
      
    $bari[] = $stringa;
       }    
    }


    for (
    $i=0$i<count($bari); $i++) {

    }



    $numerodicasi=count($bari);

    $finerange $numerodicasi;


    $ritardidiversidazero=array();

    for (
    $c=$iniziorange$c<$numerodicasi$c++) {
    settype ($bari[$c], "string");
    $stringadalavorare $bari[$c];

    $dsubstr("$stringadalavorare"13); 

    $pulito =  trim($d);
    $pulito explode(" "$pulito);
    $pulito implode(","$pulito);


    $array explode(" ",$pulito);

    settype ($array[0], "string");
    $stringa1$array[0];


    $arrayottina=explode(","$arraystringa);
    $arraycombinazione=explode("\t"$pulito);

    $COMBESTRATTA = array($arraycombinazione);
    $OTTINA = array($arrayottina);

    $I array_intersect($OTTINA[0],$COMBESTRATTA[0]); 

    $conto=count($I);

    if (
    $conto<|| $conto=="")  {
    $ritardo++;
    array_push($ritardidiversidazero$ritardo);

     }else {
    $ritardo=0;

     }


     }
     
      
     }
     

     
    }





    print 
    "

    "
    ;

    switch(
    $ritardo) {
    CASE 
    1:
    $ritardo="01";
    break;
    CASE 
    2:
    $ritardo="02";
    break;
    CASE 
    3:
    $ritardo="03";
    break;
    CASE 
    4:
    $ritardo="04";
    break;
    CASE 
    5:
    $ritardo="05";
    break;
    CASE 
    6:
    $ritardo="06";
    break;
    CASE 
    7:
    $ritardo="07";
    break;
    CASE 
    8:
    $ritardo="08";
    break;
    CASE 
    9:
    $ritardo="09";
    break;
    }



    $ultimoreport="$ritardo---terno x E[$w]---$arraystringa";
    array_push($ultimiritardi$ultimoreport);

    }

    sort ($ultimiritardi);
    for (
    $k=0$k<count($ultimiritardi); $k++) {
    print 
    $ultimiritardi[$k]."
    "
    ;
    }

    print 
    "ritardi riscontrati x ritrovare il loro max dal 1939: ";

    sort ($ritardidiversidazero);

    for (
    $q=0$q<count($ritardidiversidazero); $q++) {

    print 
    $ritardidiversidazero[$q]."
    "
    ;

    }

    $pila = array($ultimiritardi);
    $ultimo array_pop($ultimiritardi);

    print 
    "

    "
    ;



    print (
    $ultimo);

    print 
    "

    "
    ;

    print 
    "QUANTI CASI HA CONTATO? ".count($bari)."
    "
    ;

    ?>


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.