Bonjour,
Le problème que j'ai est peut être du à une mauvaise utilisation de fsockopen().
En fait, dans le but de créer un simple crawler web, j'utilise fsockopen pour me connecter à un site et ainsi récupérer tous les liens internes en récupérant les pages une par une.
J'ai une méthode qui fonctionne :
j'ouvre une connexion avec fsockopen pour chaque page (envoie des en-têtes, récupération des données, traitement, ...)
Je me disais qu'il était possible d'augmenter la rapidité du crawl en n'ouvrant qu'une seule connexion et de gérer l'appelle des page ensuite avec les en-têtes. Mais là, problème :
En effet, la récupération des données ne fonctionne que pour la première page. Mon crawl continue sur les liens récupérés sur cette 1ère page, mais aucune données n'est récupérées. J'ai donc vérifier ( avec stream_get_meta_data() ), et effectivement, lors du 1er passage,
eof passe à TRUE (logique me direz-vous). Du coup, lorsque je veux récupérer les autres données, c'est impossible!
Le fait de renvoyer de nouvelles en-têtes ne ré-initialise pas l'état de la ressource. Il est aussi impossible d'utiliser rewind() ou autre fseek() avec fsockopen.
Existe-t-il une autre façon de procéder d'après vous, ou seule ma 1ère utilisation est la bonne?
Merci d'avance