我工作上的一个文件管理系统,并想包括一个自动化的版本,例如 贝茨编号 如果一个文件与名称相同的存在。我想插入"-v0001"之间的文件和扩展和计算数量的版本,作为他们进来。

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

我想我会使用regex模式,以检查是否版本控制的存在。

我的问题是:

  • 什么样的潜在问题的使用一种编号系统这样吗?
  • 什么替代办法是否有处理的文件版本控制?

我想这是一个质量进口系统,因此我不想错误的用户要给我独特的名称,如果我没有,我没有选择,包括选择的其他版本控制方案。我的系统有标签,这样的文件具有下降的重要性,但我认为仍然有一些重要的。

有帮助吗?

解决方案

在过去我一直都只上涨的结果mktime()之前的文件的扩展(在所述文件名称中已经存在的系统)。没有必要分析当前版本的数量和你还得到一个很好的时间戳加入到的文件名称,所以你可以告诉我哪一个第一次来时,它的创建。你可以检查文件的时间戳包括在保存前如果你担心其他人可能节省的同样命名的文件在同样确切的第二个服务器。如果这真是一个问题,你应该很可能做同样的系统以及数,然后再检查一下,看看如果一个文件,名称已经存在。

时间戳具有的好处远远更不可能有人正在上载文件,已经命名有类似的版本数字,例如,bob_321235678.jpg 相比bob_1.jpg.

一个堕落到这一切都是你可以结束了一大堆的文件,或多或少相同,但具有不同的名称,因此可能需要分析数据的周期性地在寻找的文件不在该系统中使用。

其他提示

替代的办法
我可以建议探索一个真正的版本控制系统作为颠复作为一个透明的后台?你可以使用svn挂钩,以实现自动化承诺等。也许这就是简单和更加稳健。

"Autoversioning"一章所颠复 医生可以是一个良好的起点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top