Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1

    La scrittura su file viene duplicata

    Ciao,

    sto provando a scrivere in append su un semplice file di testo.

    Ho provato sia con fwrite() sia con file_put_contents() ed entrambi mi scrivono la stringa che voglio inserire, ma due volte!

    Non ci sono cicli o richiami doppi delle stesse funzioni.

    Eppure mi scrive due volte la stessa cosa nel file di testo.

    Il codice è questo:
    Codice PHP:
    <?php
                        error_reporting
    (E_ALL);

                
    # Richiamo il WebService
                
    echo "# Richiamo il Webservice

    "
    ;
                
    $client = new SoapClient(NULL,
                        array(
                        
    "location" => "$webservice_URL",
                        
    "uri"      => "urn:xmethods-delayed-quotes",
                        
    "style"    => SOAP_RPC,
                        
    "use"      => SOAP_ENCODED
                           
    )); 
                
                echo 
    "# Risultato della chiamata al Webservice


    "
    ;
                
    var_dump($client->getPolling());
                            
                
    # Loggo il successo nella chiamata del WebService
                
    $myFile "WebServ_activity.log";
                
                
    $stringData strftime("%c") . " - Everything's OK!\r";
                
                echo 
    "
     # Scrittura nel file di log ...."
    ;
                
    file_put_contents($myFile$stringDataFILE_APPEND LOCK_EX);
                
                echo 
    "


    Esecuzione terminata correttamente"
    ;
    A me non sembra ci sia niente di strano.... eppure il file risultante, dopo solo un'esecuzione, è
    codice:
    04/13/11 18:02:24 - Everything's OK!
    04/13/11 18:02:25 - Everything's OK!
    Sapete darmi qualche indicazione?

  2. #2

  3. #3
    Niente eh?

    Io non riesco a immaginare una causa

  4. #4
    Non è che quel blocco di codice viene richiamato due volte?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Originariamente inviato da pictor
    Niente eh?

    Io non riesco a immaginare una causa
    file_put_contents($myFile, $stringData, FILE_APPEND | LOCK_EX);

    FILE_APPEND e LOCK_EX sono mutualmente esclusivi prova a togliere LOCK_EX

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

  6. #6
    Originariamente inviato da satifal
    Non è che quel blocco di codice viene richiamato due volte?
    No, quella è proprio la pagina PHP che richiamo.

    Originariamente inviato da piero.mac
    file_put_contents($myFile, $stringData, FILE_APPEND | LOCK_EX);

    FILE_APPEND e LOCK_EX sono mutualmente esclusivi prova a togliere LOCK_EX
    Ah...

    Comunque provando solo LOCK_EX me lo scrive correttamente una sola volta!
    Però non va in Append.

    Se lascio solo FILE_APPEND invece me lo scrive due volte

  7. #7
    Originariamente inviato da pictor

    Comunque provando solo LOCK_EX me lo scrive correttamente una sola volta!
    Però non va in Append.

    Se lascio solo FILE_APPEND invece me lo scrive due volte
    LOCK_EX blocca il file e lo sovrascrive, FILE_APPEND crea se non c'e' oppure aggiunge se gia' esiste.

    Per qualche ragione quindi fai due volte la chiamata a file_put_contents() a distanza di un secondo una dall'altra.

    Non e' dato a vedere nello spezzone di script.

    @ edit - prova a commentare il var_dump

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

  8. #8
    Originariamente inviato da piero.mac
    ...
    Per qualche ragione quindi fai due volte la chiamata a file_put_contents() a distanza di un secondo una dall'altra.
    ...
    Da qui la mia domanda precedente. Dato che il codice sembra ok l'unica spiegazione è che da qualche parte nel codice la scrittura sul file venga invocata due volte.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Ho ridotto il codice a questo, per prova:
    Codice PHP:
    error_reporting(E_ALL);

    $myFile "WebServ_activity.log";
    $stringData strftime("%c") . " - Everything's OK!\r";
    file_put_contents($myFile$stringDataFILE_APPEND); 
    Stesso problema.

    Non è un problema di ripetizione.... richiamo la pagina a mano tramite url e non può venire chiamata due volte.

    A riprova c'è anche il fatto che se rimuovo FILE_APPEND la linea viene scritta una sola volta.

  10. #10
    A riprova c'è anche il fatto che se rimuovo FILE_APPEND la linea viene scritta una sola volta.
    Il fatto che togliendo FILE_APPEND la linea sia scritta una sola volta, non prova che il codice viene eseguito solo una volta.. anzi... avendo tolto l'append, il file viene sovrascritto, quindi vedresti una sola riga anche eseguendo lo script 10 volte.
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

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.