compter fichier dans un dossier tres , voir trop lent

Eléphant du PHP | 133 Messages

22 sept. 2010, 10:21

bonjour à tous ,
voila j'ai dossier /upload/ qui contient on va dire 4000 fichiers .
voulant compter et afficher le nb de fichiers sur une page j'ai mis ce script en iframe :
<?
$files = glob("upload/*");
$compteur = count($files);
?>
Fichiers :
<? echo $compteur; ?>
au début cela compté assez vite mais une fois les 2000 attend cela a ralenti .
actuellement lors du premier affichage il faut , on va dire , +/- 6 sec pour afficher sur ma page le nb de fichiers compté .

existe un code pour compter on va presque dire instantanément , ou alors une façon de travailler avec le code du dessus d'une autre façon pour éviter le lag du comptage.

Cdt

ViPHP
ViPHP | 4039 Messages

22 sept. 2010, 10:39

Je ferais une boucle avec readdir(), ça devrait aller plus vite que glob(). Ou alors utilise scandir(), ce qui pourrait encore être plus rapide.

Tu es sous windows ou linux ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 133 Messages

22 sept. 2010, 10:46

je suis sous 7 , pkoi ?

ViPHP
ViPHP | 5462 Messages

22 sept. 2010, 16:53

essaye plutôt avec DirectoryIterator + iterator_count

Eléphant du PHP | 133 Messages

22 sept. 2010, 17:46

oula , vous m'embroyez hihi
mon niveau ras de fleurs en php .... m'a fait avoir froid dans le dos la :)

ViPHP
ViPHP | 5462 Messages

22 sept. 2010, 17:53

oula , vous m'embroyez hihi
mon niveau ras de fleurs en php .... m'a fait avoir froid dans le dos la :)
mais non c'est pareil que toi :wink:
$files = new DirectoryIterator("upload");
$compteur = iterator_count($files);
EDIT : les balises php c'est <?php ?>

ViPHP
AB
ViPHP | 5818 Messages

22 sept. 2010, 20:55

@sax76

Alors ça va sensiblement plus vite ?

Eléphant du PHP | 133 Messages

22 sept. 2010, 23:05

super vite .......... en plantage


Fatal error: Cannot instantiate non-existent class: directoryiterator
a la ligne 3
//$files = glob("upload/*");   <= mon ex code
//$compteur = count($files);  <= mon ex code 
$files = new DirectoryIterator("upload");
$compteur = iterator_count($files);
echo $compteur; 
:(

Eléphant du PHP | 133 Messages

22 sept. 2010, 23:32

bon en cherchant different ex avec scandir & readir

j'ai reussi a faire ça :
$compteur=0;
$handle=@opendir("upload/"); 
while ($fichier = @readdir($handle)){
    $listing[$fichier]=$compteur;
    $compteur++; 
} 
echo $compteur; ?>
le chiffre s'affiche rapidement cette fois <1sec pour + de 4500

desolé j'ai vraiment pas reussi a comprendre le directoryiterator

ViPHP
ViPHP | 5462 Messages

23 sept. 2010, 00:08

super vite .......... en plantage


Fatal error: Cannot instantiate non-existent class: directoryiterator
a la ligne 3
//$files = glob("upload/*");   <= mon ex code
//$compteur = count($files);  <= mon ex code 
$files = new DirectoryIterator("upload");
$compteur = iterator_count($files);
echo $compteur; 
:(
t'as quel version de php ? (php 4 et des poussières je suppose)

Eléphant du PHP | 133 Messages

23 sept. 2010, 08:17

comment puis je le savoir ?
c'est la version de mon hebergeur c'est ça ?


par contre le script que j'ai mis au dessus lag aussi moins que le premier mais lag quand meme :(

ViPHP
xTG
ViPHP | 7331 Messages

23 sept. 2010, 09:46

phpinfo();
Pour connaître les informations. ^_-

Eléphant du PHP | 133 Messages

23 sept. 2010, 11:37

ca me retourne ça :

PHP Version 4.4.9

ViPHP
ViPHP | 4039 Messages

23 sept. 2010, 11:51

ca me retourne ça :

PHP Version 4.4.9
Hé ben, qu'on puisse encore voir ça en 2010, ça m'épate.

bien appliqué, le readdir. scandir donnerait des résultats encore plus rapides à mon avis.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 133 Messages

23 sept. 2010, 15:23

Hé ben, qu'on puisse encore voir ça en 2010, ça m'épate.
OVH :)
bien appliqué, le readdir. scandir donnerait des résultats encore plus rapides à mon avis.

le script que j'ai mis au dessus avec readdir est pas bon alors ?