Domanda

Ho una situazione molto comune. Ho un file, e ho bisogno di sovrascrivere tutto il file con nuovi contenuti. Tuttavia, il file originale si accede ad ogni caricamento della pagina (questa è una web app), quindi non può mancare per molto tempo. Alcuni ms è OK (anche se non è l'ideale), un secondo non è OK.

In questo momento faccio questo scrivendo un file temporaneo nella stessa directory e quindi rinominare il file temporaneo per il nome del nuovo file. Sto semplicemente utilizzando il File normale :: Temp e "Rinomina" per fare questo, in Perl. Mi chiedevo - c'è qualche altro raccomandato / modo migliore per fare questo? Preferibilmente uno che non richiede un modulo CPAN, in quanto questo è l'unico posto nel mio sistema che ho bisogno di fare questo, e io non voglio una nuova dipendenza solo per questo.

Oh, e tutto questo deve lavorare su Windows, Linux, BSD, OS X, Solaris, e la maggior parte delle altre piattaforme comuni.

Ecco il codice in questione , per chi fosse interessato.

È stato utile?

Soluzione

Il metodo sembra più che bene. È veloce, è atomico, che utilizza moduli di base solo, e File :: Temp è un modo sicuro per gestire i file temporanei. Che altro avete bisogno?

Altri suggerimenti

Lo farei allo stesso modo si sta facendo. Almeno su di tipo Unix sistemi operativi, una ridenominazione file viene garantito per essere atomiche in modo da non avrà alcun istanti in cui l'originale o il nuovo file non c'è.

Rename è sufficiente. Tuttavia:

è la vostra file temporaneo a rischio per condizioni di gara? Il nome del file deve essere randomizzato modo che nessuno possa causare problemi inserendo il proprio file. Utilizzare un'interfaccia per mkstemp (), se possibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top