PHP, filesize et gros morceaux
La fonction filesize de PHP (testé en version 5.1.2) se vautre lamentablement avec les fichiers de trop grande taille (18 Go par exemple).
Warning: filesize(): stat failed for ...
Voici une solution alternative :
$size = exec("ls -l '".$filename."' | awk '{print $5}'");
10 décembre 2007 à 17:31
En même temps, on manipule assez rarement des fichiers de cette taille là avec PHP… Non ?
10 décembre 2007 à 17:48
Ce n’est pas nécessairement dans un but de manipulation, il suffit de vouloir connaître la taille d’un fichier précis (par exemple de log ou d’archivage…).
10 décembre 2007 à 19:05
dew il aime manipuler les GB (grosse b….)
11 décembre 2007 à 00:11
Tiens, y a de la lumière ici.
11 décembre 2007 à 02:35
Dew il a change depuis que je suis parti :-/
11 décembre 2007 à 11:31
Et ce n’est pas un problème récent : bugs.php.net/bug.php?id=2…
11 décembre 2007 à 17:34
Uhu… je plains ceux qui vont tenter cette fonction sur leur EasyPHP dans leur système Windows
24 décembre 2007 à 18:07
Comme PHP peut être utilisé comme langage de script directement depuis le shell ( = sans Apache, ni web) , il se peut qu’il manipule nimporte quel type de fichier.
Aussi, je lancerais /bin/ls au lieu de ls pour éviter d’avoir des mauvaises surprises avec les alias (même si c’est peu probable d’en croiser dans un script).
7 février 2008 à 18:48
Salut. Après 30 minutes a essayer les soluces de http://www.php.net/filesize pour le bug lié aux fichiers dont la taille est > à 2Go, la solution que vous proposez fonctionne immédiatement et parfaitement. Merci.