PDA

View Full Version : Problème de lecture de fichier en PHP


stan
12 octobre 2003, 13h31
Salut à tous.

Je suis en train de programmer un petit script en PHP qui récupère des informations à partir d'une page web.
Je l'avais programmé sous PHP 4.2.0 (EasyPHP 1.6). Or sur le serveur en PHP 4.3.3 ce même script ne fonctionne plus.
J'ai installé EasyPHP 1.7 avec PHP 4.3.3 pour faire le test, et j'ai réussi à déterminer en partie les 2 fonctions qui pourraient me poser problème. En l'occurence fopen() et fread().
Ce que je voudrais savoir, c'est :
- Y a-t-il une limite de lecture de fichier distant imposée par PHP 4.3.3 ? ou
- Y a-t-il une limite d'affichage du contenu de fichier avec fread ?
sachant que je ne récupère qu'une partie du fichier distant que je souhaite lire, alors qu'avec l'ancienne version de PHP je récupérais tout le fichier.

merci d'avance :)

Samva
12 octobre 2003, 18h51
Tu peux pas donner un bout du code utilisé??

stan
12 octobre 2003, 19h43
Je peux, je peux...

Je ne vais donner que la partie qui pose problème :



$filedolphin = fopen("http://www.project-dolphin.nl/team.php?tid=2877","r");
$sortie = fread($filedolphin, 40960);
Comme je l'ai dit, il ne récupère pas le site distant complètement... si j'affiche le résultat de $sortie, il n'affiche pas tout le code...


En attendant, j'ai trouvé une autre solution qui fonctionne


$file = fopen("http://www.project-dolphin.nl/team.php?tid=2877", "r");
while(!feof($file)) //Tant que l'on est pas a la fin du fichier
{
$buffer = $buffer.fgets($file, 40960);
}
fclose($file);


Mais j'aimerais quand même savoir s'il y a eu des changements sur les capacités de lecture de fopen ou fread, car un code qui fonctionne sous php 4.2 mais pas sous php 4.3.3... :confused:

Samva
12 octobre 2003, 19h51
Ben ton code en premier n'est pas correct, enfin moi je trouve tu peux dépasser la fin du fichier etc, je pense que ct un bug de PHP 4.2 plutot qu'autre chose...

Matt
12 octobre 2003, 19h55
J'suis de l'avis de Samva ... Le premier code est pas propre du tout ...

Magi-X
12 octobre 2003, 20h48
hehe comme dhab les deux meme ki aide les bleme de php !

eh ben moi aussi jsuis davi de Samva :)

stan
12 octobre 2003, 21h06
Bon, mon premier code n'est pas bon, ok..
Comment j'aurais du faire ? Comme mon deuxième code ou c'est juste une histoire de mauvais codage ?

Je signale juste que je débute au niveau du PHP

Samva
12 octobre 2003, 21h11
En fait tu lis une partie de la page que tu demande,le fread s'arrete une fois que tu depasse la taille de lecture, en l'occurence tu dépassait rapidement la taille donnée, la facon la plus propre est de lire jusqua la fin du fichier en utilisant un plus petit bloc...

Et bien sur, fermer le flux d'acces au fichier :p

stan
12 octobre 2003, 21h17
Et bien sur, fermer le flux d'acces au fichier :p

Ouèp ça je l'avais mis dans mon code mais 2 lignes plus bas...
Par contre pour la taille de lecture, meme si je rajoutais 2 "0" à la fin de la taille ça ne changeait rien..

Enfin bref, ça fonctionne maintenant c'est tout bon

Merci

Samva
12 octobre 2003, 21h47
Bon petit complément d'info, fread lit un fichier binaire, pour l'utiliser sous Windows (qui fait la différence entre binaire et texte), il faut ouvrir le fichier en mode binaire ( ajouter b en parametre)
fgets lit et s'arrete si un retour chariot est rencontré ou EOF ou bien sur, la taille de lecture spécifié, sous PHP 4.3, omettre le parametre fait lire ligne par ligne...