Question

Je travaille sur un système de gestion de fichiers et que vous souhaitez inclure un versionnage automatisé, comme numérotation bates si un fichier avec le même nom existe. Je pensais d'insérer un « -v0001 » entre le nom de fichier et l'extension et en comptant le nombre de versions comme ils entrent en jeu.

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

Je pense que je voudrais utiliser un modèle regex pour vérifier si le versionnage existe.

Mes questions sont les suivantes:

  • Quels sont les problèmes potentiels de l'utilisation d'un système de numérotation comme ça?
  • Quelles sont les alternatives pour traiter le nom de fichier versioning?

Je proposais l'existence de ce système d'importation de masse, donc je ne veux pas bug à l'utilisateur de me donner des noms de fichiers uniques si je n'ai pas, et j'ai la possibilité d'inclure une sélection d'autres régimes de versioning. Mon système a des balises, donc le nom de fichier a une importance a diminué, mais je pense qu'il ya encore une certaine importance.

Était-ce utile?

La solution

Dans le passé, je l'ai toujours juste clouée sur les résultats de mktime () avant l'extension de fichier (lorsque ledit nom de fichier existe déjà sur le système). Pas besoin d'analyser pour le numéro de version et vous obtenez également une belle horodatage ajouté au nom de fichier afin que vous puissiez dire que l'on est venu en premier et quand il a été créé. Vous pouvez vérifier le fichier avec l'horodatage inclus avant d'enregistrer si vous craignez que quelqu'un d'autre pourrait enregistrer le même fichier nommé à la seconde exacte sur le serveur. Si tel est vraiment une préoccupation, vous devriez probablement faire la même chose avec votre système ainsi, le nombre, puis vérifiez à nouveau pour voir si un fichier portant ce nom existe déjà.

L'horodatage a l'avantage supplémentaire d'être une personne beaucoup plus improbable est le téléchargement d'un fichier déjà nommé avec quelque chose de similaire à votre numéro de version, par exemple, par rapport à bob_321235678.jpg bob_1.jpg.

La seule chute à tout cela est que vous pouvez retrouver avec un tas de fichiers qui sont plus ou moins les mêmes, mais avec des noms différents, de sorte que vous pouvez analyser les données à la recherche périodiquement pour les fichiers ne sont pas utilisés dans le système.

Autres conseils

Approche alternative Puis-je suggérer d'explorer un véritable système de versionnage subversion en arrière-plan transparent? Vous pouvez utiliser des crochets svn pour automatiser commits et ainsi de suite. Peut-être que ce serait simple et plus robuste.

Le "Autoversioning" chapitre sur la subversion doc peut être un bon point de départ pour cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top