Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514

    [php] Problema con apertura di file grossi

    Salve,
    ho il seguente script che mi va a aleggere dei dati contentui in un file di testo

    Codice PHP:
    nomefile="upload/mail.txt";
    //apro il file e lo leggo 
    $file_importato=fopen($nomefile,'r');
    while (!
    feof($file_importato))
        {
             
    $buffer trim(fgets($file_importato));
            
    $qlcerca="SELECT * from mailing WHERE mail='" .$buffer ."'";
            
    $esito=mysql_query($qlcerca);
            
    $ricerca=mysql_num_rows($esito);
            if (
    $ricerca==0)
                {
                    
    //$conteggio=$conteggio+1;
                    
    $dataodiernadate("Y-m-d");
                    
    $qlinserisci="INSERT INTO mailing (nome, mail, conferma, stato, data) VALUES('', '".$buffer "','s','s','" $dataodierna "')";
                    
    mysql_query($qlinserisci);    
                    
    $pagina.= _UTENTE_INSERITO $buffer    ."
    "
    ;
                }
            }
    fclose($file_importato);
    $pagina .=_INDIRIZZI_AGGIUNTI $conteggio
    lo script funziona perfettamente se il file contiene al massimo 50 indirizzi di posta(quindi 50 righe)

    se sono di piu mi viene generato un file di errore 505 del serve che mi avverte che lo script è terminato a causa di un header errato.
    è una limitazione del php o c'è un errore nello script?
    ciao e grazie
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  2. #2
    non so da cosa potrebbe essere generato l'errore...
    però comunque non credi di effettuare troppe query?

    secondo me per risparmiare sulle query potresti fare in due modi:
    1) ti leggi tutte le email presenti nel database e li metti in un array,
    quando devi verificare se l'email è già presente utilizzi in_array
    (altrimenti puoi aggiungere le email in questo modo $array = array ('ciao@ddsdss.com' => true) e utilizzi isset() che è più veloce)

    e poi generi una unica istruzione di insert (oppure delle query di inser da 10 record alla volta)

    2)(consigliata)
    rendi il campo email come unico
    fai un insert con INSERT IGNORE
    in questo modo se stai cercando di inserire un email già presente passerà all'istruzione successiva (quindi è come se non facesse l'insert)

    ciao!

  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    io penso che il problema sia il tempo di esecuzione dello script
    forser dipende proprio dai problemi che dici tu

    non capisco come posso fare una query che mi inserisca dieci record ...
    se mi fa un esempio....

    magari rtisolvo in questo modo
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    http://dev.mysql.com/doc/refman/5.0/en/insert.html

    codice:
    INSERT IGNORE
        INTO tbl_name (colonna1, colonna2)
        VALUES ('ciao', 2), ('prova', 1), ('test', 45) ...
    se il problema è dovuto al tempo di esecuzione...perchè non gli fai leggere ad esempio 50 righe alla volta...poi fai aggiornare la pagina e gli fai leggere le 50 righe successive?
    fai qualche prova... e poi se hai ancora problemi posta il codice...

    ciao!

  5. #5
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    provando con 50',ma anche 100 , mail per volta...funziona perfettamente

    scrivere la insert in quel modo richiede di craere altro codice ...come potevo generarla a aprtire da un file?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


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.