Lire uniquement la fin d'un gros fichier distant...
Equilibrius
Messages postés95Date d'inscriptionmercredi 6 juillet 2005StatutMembreDernière intervention23 août 2010
-
15 avril 2009 à 20:12
Equilibrius
Messages postés95Date d'inscriptionmercredi 6 juillet 2005StatutMembreDernière intervention23 août 2010
-
16 avril 2009 à 12:18
Voilà, je suis confronté à un problème de taille, j'ai fait
pas mal de test avec des fopen/fseek/fread, et je n'arrive toujours pas à faire
une fonction qui me retourne la fin d'un fichier distant. En détail sa donne :
<!--[if !supportEmptyParas]--> <!--[endif]-->
Un gros fichier distant (~500Mo de txt), seul les 2000
derniers octets m'intéresse (soit une petite douzaine de lignes).
<!--[if !supportEmptyParas]--> <!--[endif]-->
Comment faire avec PHP (sans télécharger ou lire
l'intégralité du fichier bien sur..) ??
<!--[if !supportEmptyParas]--> <!--[endif]-->
Je pense en ce moment a l’utilisation des socket, mais vu
que je connais pas bien ces outil, je préfère poster ici au cas où j’y
arriverai pas.
<!--[if !supportEmptyParas]--> <!--[endif]-->
Merci et Bonne soirée
Ps : résultat des test avec l'utilisation de fseek :
stream does not support seeking
A voir également:
Lire uniquement la fin d'un gros fichier distant...
Equilibrius
Messages postés95Date d'inscriptionmercredi 6 juillet 2005StatutMembreDernière intervention23 août 2010 15 avril 2009 à 20:53
salut et merci, j'en arriverai presque a la même conclusion
je vais voir du coté des commandes unix on sais jamais...
Mais sinon, sa me turlupine toujours ! je pense en ce moment au gestionnaires de téléchargement, pour reprendre un téléchargement, comment ils font si on peux pas "naviguer" dans un fichier ??
on doit bien pouvoir sélectionner en quelque sorte quel bous du fichier on veux télécharger, je pense que la réponse se trouve dans les socket, la manipulation des header, ou que sais-je encore... La nuit sera longue
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 15 avril 2009 à 21:11
Si tu trouves quelque chose ça m'intéresse.
Comme je le disais je n'y ai pas réfléchi plus que ça, mais, pour un fichier texte, le flux de données va commencer du début, pour s'achever ... par la fin. Etant donné que c'est par là que tu souhaites commencer, même avec les sockets c'est mort. L'inverse aurait été simple à réaliser.
Je doute fort qu'il y ait moyen de passer une commande qui commence par la fin.
Suivant l'utilisation que tu veux il est peut être possible de limiter le nombre de téléchargement de ce fichier, voir faire cela en "temps maqué"
Equilibrius
Messages postés95Date d'inscriptionmercredi 6 juillet 2005StatutMembreDernière intervention23 août 2010 15 avril 2009 à 21:57
lol
j'avance un peux, mais en fait, je cherche pas forcement a lire le fichier en commançant par la fin, mais plutôt lire les x derniers octet, c'est pas pareil... donc au début, je commence par récupérer la taille du fichier en question, j'ouvre un (ou une ?) socket, j'envoi plusieurs header, et je cherche Content-Length, je récup la taille en Bytes, puis je voulais faire un fopen suivit de fseek($h, $taille-$nb_octect_que_je_ve_lire); et c'est là que sa veu pas :'(
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 15 avril 2009 à 22:18
A mon humble petit avis fseek nécessite d'avoir le fichier entier (donc fopen), ce qui ne résous pas le pb.
J'ai un vague souvenir (lointain) où nous avions parlé sur ce forum de ce sujet. Plusieurs tests avaient été fait ... sans résultat.
J'ai parcouru en diagonale le Byte Ranges de ton lien, c'est peut être une piste.
Tiens moi au courant de tes avancées, ça m'intéresse vraiment, ça me permettrai notamment d'accélérer certains crawler/bots.
Suivant mes dispos je ferai quelques tests.