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, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
imagecopyresampled($tumb, $img, 0, 0, 0, 0, $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_archivo, 75);}
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_archivo, 75);}
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