Contar archivos sin utilizar glob

Hace un tiempo plantee una pregunta parecida por no decir igual, pero ahora es algo diferente.

Resulta que tengo una web de imágenes, pero al cargar alrededor de 135 tarda unos 13 segundos, en su momento hice modificaciones pero no surtieron el efecto deseado, así pues, he diseccionado el proceso en varios tramos, y resulta que cargar una tabla (array) con todos los datos tarda alrededor de 2 segundos, y el "dibujado" de la <table> con las imágenes y otros datos, el resto, unos 10 segundos para redondear; bien, al tiempo que se dibuja la <table> se llama a una función que cuenta las imágenes que hay dentro de la carpeta que se está tratando en ese momento, pues eliminando dicha función la carga total con el dibujado de la table es de 3 segundos, si se vuelve a activar vuelve a tardar esos 13 segundos, el contenido de la función que retorna la cantidad de imágenes es básicamente este:

$pCarpeta="imagenes/venta";
$mascaraTotal=".JPG";
$cantidad=count(glob($pCarpeta . "/{" . $mascaraTotal . "}",GLOB_BRACE));

Comentar que la cantidad de archivos puede ser de 250 p.ej, lo digo porque con el depurador, poniendo un punto de interrupción en la línea del glob, hasta que sale de ella se nota una parada, breve, pero parada, que claro, al multiplicarla por 135 carpetas a revisar, pues da esos 10 segundos.

¿Alguien sabe alguna otra manera de contar los archivos de una carpeta y que sea más rapido?

2 respuestas

Respuesta
-1

Puedes tener varios problemas, uno que las imágenes ocupen mucho, más de 200Kb ya es mucho para una imagen, si tienes 100, son 20 megas de datos que hay que enviar al navegador...

¿No usas base de datos?, es lo normal que hacen todas las aplicaciones de imágenes, guardan la ruta de la foto y el nombre en la base de datos, y luego solo tienes que enlazarla con <img ...>. La mayoría de estas galerías tienen dos fotos, una en minuatura para que cargue más rápido, y luego la original, que se vera al pinchan en la miniatura normalmente.

Respuesta
-1

¿Y si intentas de esta manera?

¿

<?php

$total_imagenes = count(glob("carpeta/{*.jpg,*.gif,*.png}",GLOB_BRACE));

echo "total_imagenes = ".$total_imagenes;
}
?>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas