begin process at 2012 05 30 15:02:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Lire uniquement la fin d'un gros fichier distant...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Lire uniquement la fin d'un gros fichier distant...

mercredi 15 avril 2009 à 20:12:57 | Lire uniquement la fin d'un gros fichier distant...

Equilibrius

Bonjour tout le monde, j'espère que j'aurai poster au bon endroit ^^°

 

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 :

 

Un gros fichier distant (~500Mo de txt), seul les 2000 derniers octets m'intéresse (soit une petite douzaine de lignes).

 

Comment faire avec PHP (sans télécharger ou lire l'intégralité du fichier bien sur..) ??

 

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.

 

Merci et Bonne soirée


Ps : résultat des test avec l'utilisation de fseek :
stream does not support seeking
mercredi 15 avril 2009 à 20:19:10 | Re : Lire uniquement la fin d'un gros fichier distant...

kohntark

Membre Club
Salut,

Sans y réfléchir trop je ne pense pas que ça soit possible.

(chouette, ma plus longue réponse depuis longtemps !! )

Cordialement,


Kohntark -

mercredi 15 avril 2009 à 20:53:38 | Re : Lire uniquement la fin d'un gros fichier distant...

Equilibrius

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
mercredi 15 avril 2009 à 21:11:24 | Re : Lire uniquement la fin d'un gros fichier distant...

kohntark

Membre Club
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é"

Tiens nous au courant,

Kohntark -

mercredi 15 avril 2009 à 21:13:01 | Re : Lire uniquement la fin d'un gros fichier distant...

kohntark

Membre Club
"temps masqué" bien sur, pas de prostitution ici !!


Kohntark -

mercredi 15 avril 2009 à 21:57:04 | Re : Lire uniquement la fin d'un gros fichier distant...

Equilibrius

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 :'(

Je creuse donc du coté des headers, je vien de trouve ceci : Byte Ranges là http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html, je croi que je touche au but, je vai voir ce que sa donne :p
mercredi 15 avril 2009 à 22:18:02 | Re : Lire uniquement la fin d'un gros fichier distant...

kohntark

Membre Club
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.

Bon courage,

Kohntark -

mercredi 15 avril 2009 à 22:23:11 | Re : Lire uniquement la fin d'un gros fichier distant...

Equilibrius

J'ai trouvé !!

en fait c'est pas super compliqué...

dans le second header envoyé, suffit de rajouter ceci :

fputs($fp, "Range: bytes=504085000-504085300\r\n");

504085300 est la taille du fichier, et 504085000 = le nombre d'octet qu'on veut lire moins la taille du fichier (soit 300 octets lu ici).

le serveur renverra donc QUE les 300 octets qu'on demande

(testé uniquement sous Apache2 / debian 5)

mercredi 15 avril 2009 à 22:51:07 | Re : Lire uniquement la fin d'un gros fichier distant...

kohntark

Membre Club
Chapeau bas Equilibrius

Ca fait du bien d'avoir tort.
J'avais cherché il y a quelque temps, sans résultat.
Je testerai ça dès demain si je peux.

Félicitations en tout cas !!!

Bonne nuit (pas si longue que ça au final ) à toi,

Kohntark -

jeudi 16 avril 2009 à 12:18:17 | Re : Lire uniquement la fin d'un gros fichier distant...


Cette discussion est classée dans : fichier, fin, lire, distant, gros


Répondre à ce message

Sujets en rapport avec ce message

Lire fichier XML distant proteger par htaccess [ par jordangj ] Salut à tousJe voudrais savoir comment je peut lire un fichier XML situer sur un serveur distant proteger pas un htaccess ?Une a Lire un fichier de la fin au debut [ par mouloudikhaled ] Bonjour a tous, J'ai un projet a faire et j'aimerais savoir si vous pourriez me dire comment lire un fichier non du debut a la fin mais de la fin au lire fichier csv [ par keket ] Bonjour, je reviens vous voir pour un problème avec un fichier csv. je travaille en ce moment sur un système d'importation. J'arrive biensur a apporte lire un fichier texte [ par zabou31 ] Bonjour a tous, je dois crée un programme plus prcisement un plugin qui prends des données scannées (liste de chiffres) dans un fichier texte pour les lire un fichier texte de la ligne 10 à 25 par ex [ par caviar ] salut ...j'ai un petit problème ...j'essaye de récupérer ligne par ligne les données d'un fichier texte mais sans utiliser  une fonctionwhile (!feof($ Uploder un fichier .doc ou .pdf dans un serveur distant [ par rachidphp93 ] bonjour tout le monde; Est ce que quelqu'un à une idée pour uploder un fichie lire un fichier DBF [ par cacoucatatonique ] bonjour à tous,voila je suis à la recherche d'un exemple pour lire un fichier DBF de prés de 120 000 lignes.je recherche sur google mais cela ne savai Lire un fichier quelque soit son type en php [ par sonia5 ] salut tout le monde j'ai passé toute le nuit pour resoudre mon problème mais je ne peux pas ...je veux savoir comment je peux afficher le contenu d'un Lire une page XML [ par rambc ] Simple question : peut-on lire le contenu d'un fichier XML sur une site via l'adresse du dit fichier ? Comment faire pour juste avoir le contenu brut lire fichier [ par kelm_by ] salut, est ce que il ya un moyen pour lire un fichier present sur le disque et aficher le contenu dans une variable. merci


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales