Je comprends les différences entrefgets()
etfgetss()
mais je ne comprends pas la différence entrefgets()
etfread()
, quelqu'un peut-il clarifier ce sujet? Lequel est le plus rapide? Merci!
fgets
lit une ligne - c’est-à-dire qu’elle s’arrêtera à une nouvelle ligne.
fread
lit données brutes - il s'arrêtera après un nombre d'octets spécifié (ou par défaut), indépendamment de toute nouvelle ligne qui pourrait être ou ne pas être présente.
La vitesse n’est pas une raison pour utiliser l’une sur l’autre, car ces deux fonctions ne font tout simplement pas la même chose:
La fonction fgets lit une seule ligne à partir d’un fichier texte. Il lit jusqu'à ce que la fin de la ligne en cours (ou la fin du fichier) soit atteinte. Par conséquent, si vous souhaitez lire une ligne d'un fichier texte, vous devez utiliser fgets. La fonction fread lit non seulement jusqu'à la fin de la ligne, mais également jusqu'à la fin du fichier. fread ($ handle)] ou autant d’octets spécifiés en tant que paramètre [par ex. fread ($ handle, 1024)]. Ainsi, si vous souhaitez lire un fichier complet, qu’il s’agisse d’un fichier texte contenant toutes les lignes ou des données brutes arbitraires d’un fichier, vous devez utiliser fread.
fread () pour les données binaires et fread a une limite sur le nombre de caractères que vous pouvez lire
$source_file = fopen( $filename, "r" ) or die("Couldn't open $filename");
while (!feof($source_file)) {
$buffer = fread($source_file, 5);
var_dump($buffer); //return string with length 5 chars!
}
Le nombre 5 est la longueur octets ont été lus.