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}'");

9 commentaires pour “PHP, filesize et gros morceaux”

  1. giz404 dit :

    En même temps, on manipule assez rarement des fichiers de cette taille là avec PHP… Non ?

  2. dew dit :

    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…).

  3. pr4y dit :

    dew il aime manipuler les GB (grosse b….)

  4. Thanh dit :

    Tiens, y a de la lumière ici.

  5. Xyz dit :

    Dew il a change depuis que je suis parti :-/

  6. rda dit :

    Et ce n’est pas un problème récent : bugs.php.net/bug.php?id=2…

  7. Da Scritch dit :

    Uhu… je plains ceux qui vont tenter cette fonction sur leur EasyPHP dans leur système Windows

  8. sam dit :

    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).

  9. Chr!x dit :

    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.

Laisser un commentaire


Warning: Undefined variable $user_ID in /home/clients/40e149befb0318e27381f29df8fe4ffe/sites/www.blup.fr/wp-content/themes/blup/comments.php on line 65