sto generando un nome file univoco per i file caricati con il seguente codiceGenerazione di un nome di file univoco basato sul tempo per il caricamento senza creare una condizione di competizione
$date = date('U');
$user = $_SERVER[REMOTE_ADDR];
$filename = md5($date.$user);
Il problema è che voglio usare questo nuovo nome di file più avanti nello script, ma se lo script impiega un secondo per essere eseguito, otterrò un nome file diverso la seconda volta che cerco di usare questa variabile.
Ad esempio, sto utilizzando uno script di upload/ridimensionamento/salvataggio dell'immagine. La prima operazione dello script è quella di copiare e salvare l'immagine ridimensionata, che io uso una funzione data per assegnare un nome univoco a. Quindi lo script processa il salvataggio e salva l'intero caricamento e gli assegna un nome. Alla fine del copione ($thumb
e $full
sono le variabili), ho bisogno di inserire in un database MySQL, i nomi dei file che ho usato quando ho salvato i caricamenti.
Il problema è che a volte su immagini di grandi dimensioni ci vuole più di un secondo (o durante il processo, i secondi cambiano) risultando in un diverso nome di file inserito nel database rispetto a quello in cui il file viene effettivamente salvato.
Non è una buona idea utilizzare questo metodo di denominazione?
Questo sembra rispondere alla domanda effettiva che non riguarda "come si genera un nome univoco", ma piuttosto "come impedire di generare il nome due volte". – Lucky