Quelles différences entre fread() et fgets() ? - PHP - Programmation
Marsh Posté le 17-01-2004 à 02:48:55
fgets -- Renvoie la ligne courante sur laquelle se trouve le pointeur du fichier
fread -- Lecture du fichier en mode binaire
Marsh Posté le 17-01-2004 à 12:11:36
Merci pour les réponses qui recopient le manuel ou du genre démerde toi mais elles ne me sont pas d'une grande utilité toi...
Evidement que j'ai lu le manuel (et c'est pas la peine d'en recopier un phrase par fonction), mais c'est précisement par qu'il n'apporte pas d'élément de différenciation important que j'ai posé la question.
Les descritions que fait le manuel de ces 2 fonctions sont TRES similaires et des exemples utilisent indifférement l'une ou l'autre des fonctions pour faire la même chose, c'est à dire l'évaluation de la taille d'un fichier distant (à partir d'une url).
Bref, vous avez aucune idée de la réponse à ma question apparement...
Marsh Posté le 17-01-2004 à 12:17:19
les premières lignes de chacun des manuels
fread -- Lecture du fichier en mode binaire |
fgets -- Renvoie la ligne courante sur laquelle se trouve le pointeur du fichier. |
on doit pas lire pareil
Marsh Posté le 17-01-2004 à 12:47:57
Et tu vois une grosse différence ?
Elles lisent le contenu d'un fichier, jusqu'à une certaine longueur, si tu avais fait une copie complète du manuel tu verrais que fgets lit aussi le binaire, et les 2 s'arrêtent une fois la longueur atteinte, à la fin du fichier ou sur une erreur.
Bref si tu apprenais à lire tu verrais que les différences sont TRES minimes :
- fread ne lit que le binaire.
- fgets s'arrête aussi s'il rencontre un retour chariot.
Voilà pourquoi je demande si quelqu'un en sait plus sur l'intérêt concret ou les pb concret que l'on peut rencontrer à utiliser l'une ou l'autre de ces fct, en sachant qu'elles font quasiment la même chose et que de nombreux exemples utilisent l'une ou l'autre quasiment indifferement.
Marsh Posté le 17-01-2004 à 20:16:43
Si c'est juste pour avoir la taille du fichier, utilise fread, car si par exemple tu as un fichier de 1024 caractères avec un retour chariot tout les 10 caractères, faudrait faire au moins 10 fois fgets($fd, 1024) alors qu'un fread($fd, 1024) suffira. On utilise fgets principalement pour lire un fichier de texte, genre un dump d'une base de donnée, qui doit être traité ligne par ligne.
Sous Windows, n'oublie pas le 'b' lors du fopen (cf doc), et là fread est obligatoire car fgets prend le caractère h00 (il me semble) comme une fin de fichier.
Marsh Posté le 17-01-2004 à 20:44:52
Tentacle > merci beaucoup pour cette réponse. J'en ai eu une autre tout aussi intéressante sur un autre forum, complémentaire à la tienne.
Ca change de celle des imbéciles niveau neuneu qu'on croise parfois
Marsh Posté le 17-01-2004 à 20:47:10
mais tu le fais exprès ou quoi ? t'as regardé ce que faisais stat ?
Marsh Posté le 16-01-2004 à 00:51:05
J'ai besoin pour un MOD phpBB d'évaluer la taille en ko et en pixels de fichiers images à partir d'urls. Pour cela, il existe 2 fct (filesize() & getimagesize() ) qui font ça très bien... mais à condition d'avoir la bonne version php (php 5 pour filesize() et 4.0.5 pour getimagesize() ) ou les images en local.
Or comme n'importe qui pourra installer le MOD (y compris avec un php 3.0.9 et +) et que ce sont des urls qui sont utilisées, j'ai besoin de rendre le script utilisable quitte à ne pas employer ces fonctions.
Pour cela, la technique semble t-il communément admise est d'utiliser ce genre de script...
Alors voilà ma question : là j'ai mis fgets() mais j'aurais mis fread() c'était pareil, quelle différence ?
On voit des exemples avec les 2
Un semble lire le binaire et l'autre que depuis peu mais concrètement ?
Lequel vaut-il mieux ?
Merci d'avance