8721 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je viens poster ici une requête que je n'arrive pas à solver à l'aide de l'Internet :

J'ai ici une boucle me permettant de lister une série de fichier dans un dossier


echo '<ul>';
			if($dossier = opendir('./html'))
			{
				while(false !== ($fichier = readdir($dossier))) {
					if($fichier != '.' && $fichier != '..' && $fichier != 'index.php');
					$host = 'http://localhost'; // trouver le bon chemin
					$dom = new DOMDocument();
					$dom->loadHTMLFile($host .'/newsletter/html/'. $fichier); // url du fichier
					$x=new DOMXPath($dom);
					$result = $x->query("//title");
					echo '<li>'. $x->query('//title')->item(0)->textContent .'</li>';
				}
			}
			else
			{
				echo '<li>Aucun fichier détecté</li>';
			}
			closedir($dossier);
			echo '</ul>';


J'ai utilisé le tuto de OC pour la boucle fichier et j'attrape la balise avec xpath. ça marche bien lorsque j'utilise une url de fichier concrete mais dès que j'utilise une url en fonction de la boucle j'ai, la page que j'utilise met du temps à charger et n'arrive pas forcément à récupérer l'ensemble des balises title contenu dans mes fichiers.

Je ne trouve pas de solution, peut être que vous pourrez m'aider ?

PS : si des gens peuvent m'aider à améliorer ma boucle je suis preneur !

Mille merci d'avance.
Bon, j'ai cru comprendre qu'on ne pouvait pas utiliser opendir avec une requête http... c'est déjà ça !

je poursuis mon investigation
A chaque fois que tu charges un fichier par HTTP, ça fait une requête complète qu passe par Internet avant de revenir chez toi. Pas étonnant que ce soit extrêmement lent !
Charge plutôt tes fichiers localement, ça sera 100 fois plus rapide.

Selon moi, XPath n'est pas vraiment nécessaire ici; tu peux trouver la balise title avec un simple getElementsByTagName, beaucoup moins gourmand à mon avis.

Si ça ne va toujours pas mieux, tu peux peut-être poster le code des pages avec lesquelles tu ne peux récupérer le title.