Pregunta

Estoy trabajando en un sistema de gestión de archivos y me gustaría incluir un sistema automatizado de control de versiones como numeración Bates si existe un archivo con el mismo nombre. Pensé en la inserción de un "-v0001" entre el nombre de archivo y extensión y contando el número de versiones a medida que llegan.

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

Estoy pensando que iba a utilizar un patrón de expresión regular para comprobar si existe el control de versiones.

Mis preguntas son:

  • ¿Cuáles son los problemas potenciales del uso de un sistema de numeración de esta manera?
  • ¿Y qué alternativas existen para hacer frente a versiones de nombre de archivo?

Estoy Con la intención que trata de un sistema de importación masiva, por lo que no quiero error al usuario dame los nombres de archivo únicos si yo no tengo que, y tengo la opción de incluir una selección de otra esquemas de versiones. Mi sistema tiene etiquetas, por lo que el nombre de archivo tiene una pérdida de importancia, pero yo creo que todavía hay cierta importancia.

¿Fue útil?

Solución

En el pasado siempre acabo de tachuelas en los resultados de mktime () antes de la extensión de archivo (cuando dicho nombre de archivo ya existe en el sistema). No hay necesidad de analizar el número de versión actual y también te dan una buena marca de tiempo añadido al nombre del archivo para que pueda decir cuál fue primero, y cuando fue creado. Puede comprobar si el archivo con la marca de tiempo incluido antes de guardar si está preocupado alguien podría guardar el mismo archivo nombrado en el mismo segundo exacto en el servidor. Si eso es realmente una preocupación, probablemente debería hacer lo mismo con su sistema, así, el número, a continuación, comprobar de nuevo para ver si un archivo con ese nombre ya existe.

La marca de tiempo tiene la ventaja de ser mucho más probable que alguien está cargando un archivo ya nombrado con algo similar a su número de versión, por ejemplo, en comparación con bob_321235678.jpg bob_1.jpg.

El único inconveniente de todo esto es que usted puede terminar con un montón de archivos que son más o menos lo mismo pero con diferentes nombres, por lo que es posible que desee analizar esos datos en busca periódicamente para archivos no están en uso en el sistema.

Otros consejos

Enfoque alternativo
¿Puedo sugerir la exploración de un verdadero sistema de control de versiones como la subversión como backend transparente? Se podría utilizar ganchos SVN para automatizar las confirmaciones y así sucesivamente. Tal vez esto sería simple y más robusto.

El capítulo "autoversionado" en la subversión doc puede ser un buen punto de partida para ello.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top