Foros del Web » Programando para Internet » PHP »

Tiempo de ejecución

Estas en el tema de Tiempo de ejecución en el foro de PHP en Foros del Web. Hola Tengo una dudilla que me esta volviendo loco, os cuento. Tengo un formulario en html con varios campos de texto y tres input para ...
  #1 (permalink)  
Antiguo 05/05/2012, 12:59
Avatar de standby82  
Fecha de Ingreso: abril-2011
Mensajes: 29
Antigüedad: 13 años
Puntos: 0
Tiempo de ejecución

Hola

Tengo una dudilla que me esta volviendo loco, os cuento.

Tengo un formulario en html con varios campos de texto y tres input para subir imagenes.

Cuando seleciono las tres imagenes y le doy a aceptar, php me hace lo siguiente:

Coge cada una de las imagenes y por cada imagen hace dos, una de 574*431 y otra de 80*60 y las guarda con nombres aleatorios en una carpeta del servidor (en mi caso mi pc).

Todo funciona perfectamente, pero me he dado cuenta que cuando seleciono imagenes grandes, (grandes de tamaño no de peso), parece ser que le cuesta mas hacerlas pequeñas y el resultado es que solo me hace una de las tres.

He pensado que podía ser el tiempo limite de ejecucion, pero lo tengo a 30 y el proceso no llega ni a 10 segundos.

Alguien se le ocurre porque puede pasar.

Os pongo el código que he hecho para hacerlas pequeñas

Código PHP:
$files $_FILES['file'];  // en el array $files guardamos los nombres de todas las imagenes
    


        
$destino '../../fotos_anuncio' // carpeta de destino
        
for($c=0;$c<count($files['name']);$c++) // hacer el for tantas veces como imagenes con nombre halla aunque este en blanco
         
{
                   
//echo $files['name'][$c];
            
if($files['name'][$c]!==""//si no esta vacío
                
{
                if (
validar_ext($files['type'] [$c]))
                        {
                        
                            
//creamos nombres aleatorios para cada imagen
                                
$nombre_extension$files['name'] [$c]; 
                                
$nombre_extension strtolower($nombre_extension) ;
                                
$extension split("[/\\.]"$nombre_extension) ;
                                
$n count($extension)-1;
                                
$extension $extension[$n];
                                
                                    
                                
$random1 substr(md5(time().rand()),2,10);
                                
$random2 substr(md5(time().rand()),2,10);
                                
$nombre_archivo "$random2$random1.$extension"//nombre
                                
$files'name' ] [$c]= $nombre_archivo;
                            
                                
$nombre_imagen[$i]=$nombre_archivo// nombre de os archivos para luego guardarlos en la bse de datos
                                
$i++;
                            
                        
// creamos imagenes principales de anchura574 y altura 431
                                
$anchura ="574";
                                
$hmax ="431";
                                
$anchura_tumb ="80";
                                
$hmax_tumb ="60";
    
                                
$nombre_temporal=$files['tmp_name'][$c]; //imageb
                                
$datos getimagesize($nombre_temporal);
                            
                                if(
$datos[2]==1){$img = @imagecreatefromgif($nombre_temporal);}
                                if(
$datos[2]==2){$img = @imagecreatefromjpeg($nombre_temporal);} 
                                if(
$datos[2]==3){$img = @imagecreatefrompng($nombre_temporal);}
                                
$ratio = ($datos[0] / $anchura);
                                
$altura = ($datos[1] / $ratio);
                                
$ratio_tumb = ($datos[0] / $anchura_tumb);
                                
$altura_tumb = ($datos[1] / $ratio_tumb);
                                
                                if(
$altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
                                if(
$altura_tumb>$hmax_tumb){$anchura2_tumb=$hmax_tumb*$anchura_tumb/$altura_tumb;$altura_tumb=$hmax_tumb;$anchura_tumb=$anchura2_tumb;}
                                
$foto imagecreatetruecolor($anchura,$altura);
                                
$tumb imagecreatetruecolor($anchura_tumb,$altura_tumb);
                                
imagecopyresampled($foto$img0000$anchura$altura$datos[0], $datos[1]);
                                
imagecopyresampled($tumb$img0000$anchura_tumb$altura_tumb$datos[0], $datos[1]);
                                if(
$datos[2]==1){imagegif($foto,  $directorio."/".$nombre_archivo);}
                                if(
$datos[2]==2){imagejpeg($foto$destino."/".$nombre_archivo75);}
                                if(
$datos[2]==3){imagepng($foto,  $directorio."/".$nombre_archivo); }
                                
$tumbocilla="tumb";
                                if(
$datos[2]==1){imagegif($tumb,  $directorio."/".$tumbocilla.$nombre_archivo);}
                                if(
$datos[2]==2){imagejpeg($tumb$destino."/".$tumbocilla.$nombre_archivo75);}
                                if(
$datos[2]==3){imagepng($tumb,  $directorio."/".$tumbocilla.$nombre_archivo); }
                                
                                
//Eliminamos archivo temporal
                                
                                
unlink($nombre_temporal);
                                
                    }
                    else
                    {
                        echo 
"El archivo \"".$files['name'][$c]."\" no es valido<br/>";
                    } 
//if validar ext
                
}    
                else
                { 
                echo 
" esta vacio <br />";
                }
// if de vacío
                    
                    
                            
   
 
//for primero 
  #2 (permalink)  
Antiguo 05/05/2012, 19:13
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Tiempo de ejecución

Si no es tiempo de ejecución puede ser memoria o que una de las imágenes supera el upload_max_filesize
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 05/05/2012, 19:20
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 8 meses
Puntos: 103
Respuesta: Tiempo de ejecución

Cita:
Iniciado por maycolalvarez Ver Mensaje
Si no es tiempo de ejecución puede ser memoria o que una de las imágenes supera el upload_max_filesize
para eso usa la funcion
Código PHP:
Ver original
  1. ini_set("memory_limit","64M");
al principio de tu script, fijate que 64M significa 64 Megabytes, podes ponerle mas si queres
  #4 (permalink)  
Antiguo 06/05/2012, 13:52
Avatar de standby82  
Fecha de Ingreso: abril-2011
Mensajes: 29
Antigüedad: 13 años
Puntos: 0
Respuesta: Tiempo de ejecución

El limite de memoria lo tengo configurado en el php.ini a 100M, no creo que sea por eso.

Yo creo que es por algun error que ocurre, ya que me he dado cuenta que al poner 3 fotos grandes, la primera foto que procesa lo hacer bien y en la segunda, algun error le tiene que dar porque deja de ejecutar el código, incluso no ejecuta un par "echo" que tengo al final del código y que estan fuera de cualquier if, for .....

¿como podría saber si se produce algún error de ejecución?, ya que a nivel de programación no tiene errores.

gracias
  #5 (permalink)  
Antiguo 06/05/2012, 14:40
Avatar de standby82  
Fecha de Ingreso: abril-2011
Mensajes: 29
Antigüedad: 13 años
Puntos: 0
Respuesta: Tiempo de ejecución

Vale, he encontrado el error, es este:

Allowed memory size of 104857600 bytes exhausted (tried to allocate 12168 bytes) on line 279

y la linea 279 tiene este código:
Código PHP:
if($datos[2]==2){$img imagecreatefromjpeg($nombre_temporal);} 
Y porque me pone en el error que se ha agotado la memoria de 104857600 bytes que eso pasado a megas son 100, cuando yo solo estoy subiendo 3 fotos que ocupan 1.6 megas cada una ??? no entiendo???

Alguien tiene idea???

Etiquetas: formulario, html, imagenes
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 15:22.