Domanda

Sto lavorando su un sistema di gestione dei file e vorrei includere un sistema automatico delle versioni come numerazione Bates se esiste un file con lo stesso nome. Ho pensato di inserire un "-v0001" tra il nome del file e l'estensione e contando il numero di versioni così come arrivano.

$basename = pathinfo($filename, PATHINFO_BASENAME);
$fname = pathinfo($filename, PATHINFO_FILENAME);

 while (filenameExists($basename)) {
     //look for existing -vnnnn (at end of file name)
     if (versioningExists($fname)) {       
         //roll number ahead, set bates number
     } else {
         //start bates numbering at 1    
     }
     //insert bates version number (str_pad)
 }

Sto pensando che avrei usato un modello di espressione regolare per verificare se esiste il controllo delle versioni.

Le mie domande sono:

  • Quali sono i potenziali problemi di utilizzo di un sistema di numerazione come questo?
  • e quali alternative ci sono per fare con il nome del file delle versioni?

sto intendendo che questo è un sistema di importazione di massa, quindi non voglio bug all'utente di darmi nomi di file unici, se io non devo, e io ho la possibilità di includere una selezione di altri sistemi di controllo delle versioni. Il mio sistema ha i tag, quindi il nome del file ha una diminuita importanza, ma vorrei che ci sia ancora una certa importanza.

È stato utile?

Soluzione

In passato ho sempre e solo appiccicato sui risultati di mktime () prima l'estensione del file (quando ha detto il nome del file è già presente nel sistema). Non c'è bisogno di analizzare il numero di versione corrente e si ottiene anche una bella timestamp aggiunto al nome del file in modo da poter dire che uno è venuto prima e quando è stato creato. È possibile verificare il file con il timestamp in dotazione prima di salvare se siete preoccupati qualcun altro potrebbe salvare lo stesso file di nome alla stessa secondo esatto sul server. Se questo è davvero un problema, probabilmente si dovrebbe fare lo stesso con il sistema, così, il numero, quindi controllare di nuovo per vedere se un file con questo nome esiste già.

Il timestamp ha il vantaggio di essere di gran lunga più probabile che qualcuno sta caricando un file già dal nome con qualcosa di simile al vostro numero di versione, per esempio, bob_321235678.jpg rispetto a bob_1.jpg.

L'unico lato negativo di tutto questo è che si può finire con un gruppo di file che sono più o meno lo stesso, ma con nomi diversi, quindi si consiglia di analizzare i dati periodicamente alla ricerca di file non è in uso nel sistema.

Altri suggerimenti

Approccio alternativo
Posso suggerire di esplorare un vero e proprio sistema di controllo delle versioni, come la sovversione come backend trasparente? Si potrebbe utilizzare agganci svn commit per automatizzare e così via. Forse questo sarebbe semplice e più robusto.

Il capitolo "autoversionamento" sul sovvertimento doc può essere un buon punto di partenza per questo.

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