Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    52

    fseek: spostare handle alla fine?

    Voglio scrivere un file di testo come log di eventi del mio pc connesso al sito remoto.

    Volevo chiedervi se è possibile mandare l'handle di un file direttamente alla fine del file per scrivere alla fine dopo aver scritto una riga all'inizio:

    Codice PHP:

    $fpLog 
    fopen("log.txt""r+");

    // scrivo la prima riga: (e la riscrivo ogni volta)
    fwrite($fpLog$WanIP);

    // mi sposto alla fine:
    fseek($fpLog,  ???  );

    // aggiungo l'ultimo comando log al termine del file:
    fwrite($fpLog$log); 
    Potrei chiudere il file e riaprirlo in modalità append:

    fclose($fpLog)
    $fpLog = fopen("log.txt", "a+");

    però avrei due accessi al file invece che uno...

    Oppure potrei caricare il file in un' array, modificarlo al volo e scriverlo tutto da zero, però anche qui caricare tutto il file per scrivere solo due righe...?

    Quale approccio pù efficiente mi consigliate? Come imposto l'handle alla fine del file?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    52
    Ho fatto una domanda troppo banale?
    O è troppo difficile?

    Su, un consiglio, che sono alle prime armi col PHP...

  3. #3
    se lo apri in append ti manda già alla EOF
    teoricamente se ci devi scrivere solamente dentro puoi anche fare "a" invece che "a+"


  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    52
    Grazie della risposta.
    Però il mio problema è che devo ogni volta riscrivere la prima riga e aggiungerne una alla fine.
    Perciò il file devo aprirlo prima in r+ per riscrivere la prima riga e poi devo spostare l'handle alla fine.

    Chiedevo se c'era un modo di spostare l'handle, per evitare di chiudere il file aperto in r+ e riaprirlo in modalità a... Per non dover fare l'accesso due volte. Con file grossi può creare un rallentamento?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    52
    Scusate il doppio post, ma il forum non mi permette di cancellarlo?

    Tra l'altro avevo fatto una ricerca con il termine 'file' ma mi restituisce una schermata bianca...

  6. #6
    per sapere dove spostare il pointer una volta che hai già aperto il file per delle operazioni preliminari usa sizeof($puntatorefile)


  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    52
    Non mi sembra che vada.
    Ho provato:

    $fpLog = fopen("log.txt", "r+");

    fseek($fpLog, sizeof($fpLog)

    fwrite($fpLog, $log);

    ma sizeof mi dà come risultato 1. Dovrebbe dare come valore il numero di elementi in un array, ma il puntatore non è un array...


    Piuttosto mi hai dato un'idea:
    ho provato a vedere quanto è il size del file e così funziona:

    fseek($fpLog, filesize("log.txt"));

    L'unica domanda che mi rimane è se PHP deve 'scorrere' tutto il file o si posiziona immediatamente a quella posizione?

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