Foros del Web » Programando para Internet » PHP »

Nombre irrepetible para imágenes

Estas en el tema de Nombre irrepetible para imágenes en el foro de PHP en Foros del Web. Cita: Iniciado por PHPeros Con mi codigo sip. Suponiendo que la carpeta es accesible y puedes obtener los files via url. Como lo harias para ...

  #31 (permalink)  
Antiguo 07/09/2013, 12:06
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 11 años, 3 meses
Puntos: 55
Respuesta: Nombre irrepetible para imágenes

Cita:
Iniciado por PHPeros Ver Mensaje
Con mi codigo sip.
Suponiendo que la carpeta es accesible y puedes obtener los files via url.

Como lo harias para la funcion que he compartido arriba y cuales serían tus recursos computacionales necesarios para obtener 1 archivo en 1 día.?
  #32 (permalink)  
Antiguo 07/09/2013, 12:22
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Nombre irrepetible para imágenes

Cita:
Iniciado por Erick_MD9 Ver Mensaje
Suponiendo que la carpeta es accesible y puedes obtener los files via url.

Como lo harias para la funcion que he compartido arriba y cuales serían tus recursos computacionales necesarios para obtener 1 archivo en 1 día.?
Me ha molado lo de str_shuffle(). Yo las estaba guardando en un array...
  #33 (permalink)  
Antiguo 07/09/2013, 12:29
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Nombre irrepetible para imágenes

Sabes si se puede hacer con RegExp?? Asi no escribimos todo el abecedario...
  #34 (permalink)  
Antiguo 07/09/2013, 12:42
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 11 años, 3 meses
Puntos: 55
Respuesta: Nombre irrepetible para imágenes

Entiendo bien lo que dices. Se ve horrible.

Cita:
Iniciado por PHPeros Ver Mensaje
Sabes si se puede hacer con RegExp?? Asi no escribimos todo el abecedario...
No que yo sepa.
RexExp, es para buscar patrones, no generar texto.

Saludos
  #35 (permalink)  
Antiguo 07/09/2013, 12:56
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Exclamación Respuesta: Nombre irrepetible para imágenes

Cita:
Iniciado por Erick_MD9 Ver Mensaje
Entiendo bien lo que dices. Se ve horrible.



No que yo sepa.
RexExp, es para buscar patrones, no generar texto.

Saludos
No encontré nada... Bueno el tema ya está solucionado, hemos propuesto un montón de ideas aunque el usuario que creó el tema no haya mostrado existencia...

Última edición por PHPeros; 07/09/2013 a las 13:03
  #36 (permalink)  
Antiguo 07/09/2013, 14:39
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Nombre irrepetible para imágenes

Cita:
El caso es casi igual: entre más archivos haya con el mismo nombre, más veces se tendrá que comprobar, con el añadido de tener que crear el aleatorio y luego el hash.La única ventaja sería si hay pocos archivos, pongamos por ejemplo un rango de 0 a 100, y ya se han subido 5 archivos.Con mi método se tendría que comprobar 5 veces para que ya no se repitiera el nombre (patito 6).Con tu método, es posible (de hecho muy probable) que a la primera nos diera un nombre diferente.
Me gustaria comentar todo tu post pero no tengo tanto tiempo :)

Con mi codigo, la probabilidad de colision (que se salvaria en la siguiente repeticion del bucle) es 1/(26+10)^32
  #37 (permalink)  
Antiguo 07/09/2013, 17:14
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: Nombre irrepetible para imágenes

Existe uniqid. Basado en microtime, que es la solución barata, y sin problemas.
Seguro que si las imágenes fueran a la base de datos, se usaría el valor de algún campo autoincremental como prefijo/sufijo de la imagen...
Y si no van...se crea un fichero que guarde un número el cual se incrementa tras cada subida de imagen.Lógicamente, ese fichero tendrá que manipularse usando flock() para evitar escrituras concurrentes.
  #38 (permalink)  
Antiguo 07/09/2013, 17:17
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Nombre irrepetible para imágenes

Cita:
Iniciado por PHPeros Ver Mensaje
Ok, todo aclarado. Pero si han conseguido desencriptar los paquetes SSL de https por vulnerabilidades, algún chino friki hará lo mismo con los de PHP. Saludos
De hecho, el algoritmo md5 se ha abandonado por esto mismo. El sha1 me parece que también lo dejó la NSA hace 10 años. Hay personas que se lo toman como un reto el demostrar que un algoritmo es vulnerable.

Cita:
Iniciado por ocp001a
El caso es casi igual: entre más archivos haya con el mismo nombre, más veces se tendrá que comprobar, con el añadido de tener que crear el aleatorio y luego el hash.
Eso es verdad, pero el "más" es muuuy pequeñito :D (sobre todo en las condiciones que te explicaré más abajo)
Hace unas horas escribí desde mi móvil pero parece que no llegó el último mensaje. Era sobre esto:


Cita:
Iniciado por ocp001a
La única ventaja sería si hay pocos archivos, pongamos por ejemplo un rango de 0 a 100, y ya se han subido 5 archivos.

Con mi método se tendría que comprobar 5 veces para que ya no se repitiera el nombre (patito 6).
Con tu método, es posible (de hecho muy probable) que a la primera nos diera un nombre diferente.
Ésta es una de las partes donde reside tu error: no debes crearte trabajo innecesario, es decir, si ya sabes que hay 5 patitos, por qué los vuelves a comprobar?

Cita:
Iniciado por ocp001a
Pero ahora supongamos para el mismo rango de 0 a 100 nombres, que ya se han ocupado 80.

Con mi método, se harán 80 comprobaciones.
Con tu método, tanto es posible que nos de un número libre a la primera como es posible que nos de números ocupados muchas veces, ya que sólo tiene el 20 por ciento de posibilidades de acertar a un número libre, con lo que es posible que se hagan más de 80 comprobaciones. Y entre menos números libres queden la cantidad de comprobaciones aumentará.

Si haces una simulación a obtener números libres en estas condiciones lo verás.
Aquí estás planteando mal el problema. Te explico.
a) Te estás creando complejidad y estás yendo por el peor caso: si puedes hacer 80 comprobaciones, pues las haces todas! :D Y si puedes hacer mil, haces mil, y si... no sigo :D
b) Yo no elijo nombres de entre un rango de 100, sino un número aleatorio entre 0 (o menos) y PHP_INT_MAX (6 082 244 480 221 302 255 en 32 bits).
De verdad crees que, aún dejándote el SISTEMA DE ARCHIVOS (NTFS permite "sólo" 4 294 967 295 archivos), vas a llegar siquiera a un 0,000000001 %? :D :D (no hablemos de un 80%) Es decir, la posibilidad de colisión puede considerarse ¡NULA! Pero un poco como dice Erick_MD9 (por fanatismo), un poco por evitar cualquier problema... comprobamos que no se repita un nombre.

Cita:
Iniciado por ocp001a
Por otro lado, el método que yo propuse es para pocos archivos y sin depender de llevar un registro, si se va a almacenar muchos archivos en la misma carpeta y se sabe que va a haber repetidos, se puede hacer simplemente guardando el último nombre, digamos que llegamos a patito999, el siguiente secuencia será patito1000 y ya está.

Supongamos la prima vez que se guarda la imagen patito.jpg

Almacenamos sólo el nombre en algún lugar "patito/0"

si suben otro patito.jpg, comprobamos que ya existe, por lo tanto aumentamos el índice y lo almacenamos "patito/1";
Si es para unos pocos archivos, no se nota. Pero ya mantener un registro de nombres de archivos... :D eso ya lo hace el sistema de archivos! No es eficiente. Además puede surgir algún desfase realidad - registro de nombres, con el tiempo.
________

En serio, no es difícil: generamos un número entre 0 y 6082244480221302255, le concatenas la extensión y ya estaa! :) Ni siquiera hace falta md5 ni sha1 ni nada. Perdonadme la expresión, pero es como mear en medio del océano pacífico, no vas a molestar a nadie. Y si por alguna casualidad de la vida en ese momento hay un naufrago a tu lado, pues te mueves 1000 km y seguro que no te encuentras ya a nadie. Espero que entiendas la comparación.

Y por último, si me he equivocado en algo, os ruego que me perdonéis, es muy tarde aquí :D

Última edición por Onedy; 07/09/2013 a las 17:24

Etiquetas: formulario, nombre
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:00.