fgets

HD
Mammouth du PHP | 1181 Messages

12 août 2005, 03:24

encore moi :oops:
fgets() retourne la chaîne lue jusqu'à la longueur length - 1 octet
cela fait combien de caracteres ?
et quand je fais
fgets($fp, 1096)
1096 c'est le nombre d'octets donc (ou de caracteres voire de ligne)?
merci[/quote]

HD
Mammouth du PHP | 1181 Messages

12 août 2005, 03:31

en plus de la question precedente en voila une autre :
$fp = fopen("http://www.site.com","r"); //lecture du fichier
if (!isset($page)) $page="";        // creer $page si elle n'existe pas
while (!feof($fp)) { //on parcourt toutes les lignes
  $page .= fgets($fp, 1096);        // lecture du contenu de la ligne
}
en fait ce script est lent car il recupere toute la page alors que je n'ai besoin que des 1eres lignes.
je dois mettre quoi à la place de
(!feof($fp)) 
:?:
d'autres solutions pour le rendre plus rapide :?:
merci

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

12 août 2005, 10:00

1er probleme : En ascii 1 octet = 1 caractère donc fgets va te ramener 1095 caractères

2eme probleme :
Note : Le paramètre length est devenu optionnel depuis PHP 4.2.0. Si il est omis, il prend la valeur par défaut de 1024. Depuis PHP 4.3.0, omettre le paramètre length fait que la fonction va continuer à lire le flux jusqu'à ce que la ligne s'achève. Si la majorité des lignes du fichier dépassent les 8 ko, il est plus efficace pour votre script de spécifier ce paramètre.
autrement dit, si tu est en php 4.3+ tu fait des fgets sans le second parametre.
Tu récupère donc une ligne, tu regarde si c'est la dernière de celles qui t'intéressent et si c'est le cas tu stoppe la boucle (break;) sinon tu continue jusqu'a eof
"... demanda à voir le CV du recruteur pour être sûr que le chef du personnel était compétent".