Frage

Ich arbeite an einer Datei-Management-System und möchte umfassen eine solche automatisierte Versionsverwaltung wie Bates-Nummerierung wenn eine Datei mit dem gleichen Namen existiert. Ich dachte an dem Einfügen eines „-v0001“ zwischen dem Dateinamen und Erweiterung und die Anzahl der Versionen zu zählen, wie sie kommen in.

$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)
 }

Ich denke, ich RegexMuster überprüfen verwenden würde, wenn die Versionierung vorhanden ist.

Meine Fragen sind:

  • Was sind die möglichen Probleme der ein Nummerierungssystem wie folgt aus?
  • Und welche Alternativen gibt es für den Umgang mit Dateinamen Versionierung?

Ich bin die Absicht, das ein Massenimport-System, so dass ich den Benutzer nicht auf Bug möge mir eindeutige Dateinamen geben, wenn ich nicht haben, und ich habe die Möglichkeit, eine Auswahl von einschließlich die Versionsschemata. Mein System hat Tags, so Dateiname eine verminderte Bedeutung hat, aber ich würde denken, gibt es noch einige Bedeutung.

War es hilfreich?

Lösung

In der Vergangenheit habe ich immer nur auf die Ergebnisse der Mktime gehefteten () vor der Dateierweiterung (wenn der Dateiname auf dem System bereits vorhanden ist). Keine Notwendigkeit für die aktuelle Versionsnummer zu analysieren und Sie auch einen schönen Zeitstempel an die Dateinamen hinzugefügt haben, so können Sie sagen, die man zuerst kam und wann es erstellt wurde. Sie können vor dem Speichern enthielt mit dem Zeitstempel für die Datei, wenn Sie besorgt sind, jemand anderes die gleiche Datei mit dem Namen in der gleichen Sekunde genau auf dem Server speichern kann. Wenn das wirklich ein Anliegen ist, sollten Sie wahrscheinlich auch das gleiche mit dem System tun, bis die Nummer, dann wieder überprüfen, um zu sehen, ob eine Datei mit diesem Namen existiert bereits.

Der Zeitstempel hat den zusätzlichen Vorteil, weit unwahrscheinlicher ist jemand eine Datei mit etwas bereits benannt ist das Hochladen ähnlich wie Ihre Versionsnummer, zum Beispiel im Vergleich zu bob_321235678.jpg bob_1.jpg.

Der einzige Nachteil all dies ist, dass Sie mit einem Bündel von Dateien können am Ende, die mehr oder weniger gleich sind, aber mit unterschiedlichen Namen, so dass Sie, dass die Daten in regelmäßigen Abständen der Suche nach Dateien analysieren mögen nicht in Verwendung in dem System.

Andere Tipps

Alternativer Ansatz
Ich könne darauf hindeuten, ein echtes Versionierungssystem als Subversion als transparentes Backend zu erkunden? Sie könnten SVN Haken verwenden, um Commits zu automatisieren und so weiter. Vielleicht wäre dies einfach und robust sein.

Das "Autoversioning" Kapitel über die Subversion doc kann ein guter Ausgangspunkt für das sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top