Foros del Web » Programando para Internet » PHP »

Duda en subida de ficheros

Estas en el tema de Duda en subida de ficheros en el foro de PHP en Foros del Web. Buenas tardes. Estoy desarrollando un proyecto en donde los clientes pueden subir imagenes, esta imagenes las sube en plan masivo, para posteriormente realizar un pedido ...
  #1 (permalink)  
Antiguo 24/01/2013, 14:02
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Duda en subida de ficheros

Buenas tardes.

Estoy desarrollando un proyecto en donde los clientes pueden subir imagenes, esta imagenes las sube en plan masivo, para posteriormente realizar un pedido a fabrica.

La duda me surgue y si falla la subida por caida de la red... tendria los ficheros hasta el corte y registros mysql asociados al usuario pero no estaria completa la subida. No se si me explico.

A donde quiero llegar es si un cliente confirma el pedido esas fotos deben de estar todas. "un maximo de 30 fotos"

Pero si por el contrario no confirma el pedido o cierrar el navegador o session esas fotos deberian de borrarse para no ocupar espacio en el server. Esto mismo deberia de hacerlo si la conexion falla, es decir que empiece de nuevo.

No se como plantear esta ultima cuestión.. :( Pense hacer una carpeta temporal hasta que el cliente confirma el pedido las fotos permaneceran allí. una vez confirmado el pedido que pasen a su carpeta personal. Pero si cierra el navegador me seguiria ocurriendo lo mismo que comente antes.

Haber si me podeis dar alguna idea de por donde tirar, gracias.
  #2 (permalink)  
Antiguo 24/01/2013, 14:10
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Duda en subida de ficheros

en principio las imágenes se suben a la carpeta temporal antes de que php entre en acción, por lo cual ante una caída no deberías preocuparte por las imágenes resagadas porque el mismo OS se encargaría de eliminar el contenido de la carpeta temporal.

con respecto a la Base de datos, allí vemos la importancia de usar motores transaccionales, de modo que inicio una transacción (START TRANSACTION) y si en dado caso hay una caída, el SDBMS ignorará todos los inserts que no sean confirmados (COMMIT), así evito corrupción en la base de datos.

También es importante tener una política de limpieza de archivos, por ejemplo un cronjob que se ejecute cada noche y que elimine las imágenes de hace n meses y que marque o elimine en la DB esos registros.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 24/01/2013, 14:27
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Duda en subida de ficheros

Lo de la base de datos lo habia pensando hacerlo con una transaccion.
Pero nunca realice ninguna , me podrias poner algun ejemplo, gracias.

Osea para tener una correcta limpieza de este directorio debo de ejecutar un servicio que corra en el server. La pregunta es como realizo este script servicio windows .... no tengo ni ideaaaaaaaaaaaaaa
  #4 (permalink)  
Antiguo 25/01/2013, 12:28
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Duda en subida de ficheros

Buenas,

una transaccion con PDO

Código PHP:

try{ 
conexion = new PDO("mysql:host=".$host.";dbname=".$db,$user,$pass);
conexion->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
conexion->beginTransaction();
conexion->query($sql1);
conexion->query($sql2);
conexion->commit();
echo 
'Consultas ejecutadas satisfactoriamente';
}
catch (
PDOException $e) {                
     echo  
'Ocurrió un ERROR.';
if (
conexion != null)
      
conexion->rollBack(); // aqui deshaces todo lo ejecutado hasta el momento del error
                    

Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #5 (permalink)  
Antiguo 25/01/2013, 14:29
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Duda en subida de ficheros

con respecto al cronjob de php en windows es simple:

creas el script en php (obvio ) y creas una tarea programada (panel de control/herramientas administrativas) que llame al php-cli.exe pasando como parámetro la ruta del script php.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 26/01/2013, 02:54
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Duda en subida de ficheros

Cita:
Iniciado por rodno Ver Mensaje
Buenas,

una transaccion con PDO

Código PHP:

try{ 
conexion = new PDO("mysql:host=".$host.";dbname=".$db,$user,$pass);
conexion->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
conexion->beginTransaction();
conexion->query($sql1);
conexion->query($sql2);
conexion->commit();
echo 
'Consultas ejecutadas satisfactoriamente';
}
catch (
PDOException $e) {                
     echo  
'Ocurrió un ERROR.';
if (
conexion != null)
      
conexion->rollBack(); // aqui deshaces todo lo ejecutado hasta el momento del error
                    

Saludos
Pufff la clase PDO nunca trabaje con ella, tendre que ponerme a ello. los try catch son obligatorios meterlos en las transaciones ??¿¿ lo pregunto porque yo tengo un try catch ya cuando realizo la conexion a bd

Cita:
Iniciado por maycolalvarez Ver Mensaje
con respecto al cronjob de php en windows es simple:

creas el script en php (obvio ) y creas una tarea programada (panel de control/herramientas administrativas) que llame al php-cli.exe pasando como parámetro la ruta del script php.
Ya, este punto no me preocupa ya he visto que el servidor puede tener tareas a script php corriendo jejej..

Gracias Compañeros

Etiquetas: ficheros, mysql, registro, subida
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




La zona horaria es GMT -6. Ahora son las 06:45.