Attente du chargement du fichier xml
Résolu
nanaval31
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
nanaval31 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
nanaval31 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Je génère un fichier xml avec un code php. Tout fonctionne, seulement je souhaiterai que mon fichier xml soit chargé complètement avant d'afficher la page.
Comment je dois faire ?? J'ai regardé sur internet , mais je n'ai pas réussi à faire fonctionner ce que j'avais trouvé
Une idée ? merci :)
Je génère un fichier xml avec un code php. Tout fonctionne, seulement je souhaiterai que mon fichier xml soit chargé complètement avant d'afficher la page.
Comment je dois faire ?? J'ai regardé sur internet , mais je n'ai pas réussi à faire fonctionner ce que j'avais trouvé
Une idée ? merci :)
A voir également:
- Attente du chargement du fichier xml
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
7 réponses
Salut,
Comment affiches-tu le contenu de ta page ?
Si tu utilises une série de commande 'echo', tu pourrais utiliser les fonctions de bufferisation de sortie : https://www.php.net/manual/fr/ref.outcontrol.php
Une autre solution est de concaténer tout le contenu dans une variable puis d'afficher cette variable à la fin de ton traitement.
Bonne journée
Comment affiches-tu le contenu de ta page ?
Si tu utilises une série de commande 'echo', tu pourrais utiliser les fonctions de bufferisation de sortie : https://www.php.net/manual/fr/ref.outcontrol.php
Une autre solution est de concaténer tout le contenu dans une variable puis d'afficher cette variable à la fin de ton traitement.
Bonne journée
salut Pitet,
Merci de ta réponse
Pour afficher le cnotenu de ma page, j'utilise le dom
J'ai regardé les fonctions de bufferisation de sortie.. mais je ne sais pas torp quoi utiliser.. ni comment dans mon code.. peux tu m'en dire un peu plus ?
Merci à toi
Merci de ta réponse
Pour afficher le cnotenu de ma page, j'utilise le dom
$fichier = 'http://wcf.tourinsoft.com/Syndication/cdt65/b1155573-8443-49fb-a3d0-bb05526278e6/Objects?$filter=ListingCOMMUNE eq\'heches\''; $dom = new DOMDocument('utf-8'); if (!$dom->load($fichier)) { die('Impossible de charger le fichier XML'); } $recupproperties = $dom->getElementsByTagName('properties'); foreach ($recupproperties as $properties) { //Cherche les éléments ListingCOMMUNE $nom = $properties->getElementsByTagName('ListingCOMMUNE'); $nom1 = $nom->item(0)->nodeValue; echo $nom1; }
J'ai regardé les fonctions de bufferisation de sortie.. mais je ne sais pas torp quoi utiliser.. ni comment dans mon code.. peux tu m'en dire un peu plus ?
Merci à toi
Voici un exemple représentant ton code :
C'est simplement une série de 'echo'.
Si on veut afficher tout le contenu après la fin du traitement en utilisant le buffer de sortie, voici comment utiliser ces fonctions :
L'autre solution sans utiliser le buffer de sortie est quasiment identique :
// exemple 1 echo 'debut contenu'; echo 'blabla'; echo 'fin contenu'; // ... traitement ... echo 'fin du traitement';
C'est simplement une série de 'echo'.
Si on veut afficher tout le contenu après la fin du traitement en utilisant le buffer de sortie, voici comment utiliser ces fonctions :
// exemple 2 // on démarre l'enregistrement du buffer ob_start(); // les 'echo' après le ob_start sont enregistrés dans le buffer et non affichés echo 'début contenu2'; echo 'blabla2'; echo 'fin contenu2'; // on récupère le contenu du buffer $contenu = ob_get_contents(); ob_end_clean(); // ... traitement ... echo 'fin du traitement2'; // on affiche le contenu echo $contenu;
L'autre solution sans utiliser le buffer de sortie est quasiment identique :
// exemple 3 // on utilise une variable php à la place du buffer $contenu = ''; $contenu .= 'debut contenu3'; $contenu .= 'blabla3'; $contenu .= 'fin contenu3'; // ... traitement ... echo 'fin du traitement3'; echo $contenu;
Ok pitet je te remercie pour tes explications très détaillées!
J'ai testé ça dans mon code, bon rien ne se passe le fichier se charge comme avant, j'imagine que c'est normal , mais comment savoir si cela fonctionne ?
Autre chose, on m'a également dit que par défaut, le fichier se charge entièrement , et la page s'affiche après. Et si jamais le fichier est trop lourd, il faut utiliser set_time_limit(0); au début du code, qu'en penses tu ?
Merci :)
J'ai testé ça dans mon code, bon rien ne se passe le fichier se charge comme avant, j'imagine que c'est normal , mais comment savoir si cela fonctionne ?
Autre chose, on m'a également dit que par défaut, le fichier se charge entièrement , et la page s'affiche après. Et si jamais le fichier est trop lourd, il faut utiliser set_time_limit(0); au début du code, qu'en penses tu ?
Merci :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Concernant le chargement de ta page, ton script php sera effectivement exécuté entièrement avant d'afficher le moindre résultat, sauf si tu utilises la fonction ob_flush pour vider le buffer et commencer l'affichage avant la fin du script (il faut que la directive php output_buffering soit également désactivée).
Mais les serveurs web et les navigateurs client ont parfois leurs propres buffers sur lesquels tu ne pourras de toute façon pas intervenir.
PHP impose par défaut une limite de 30s d'exécution pour tout les scripts et arrête l'exécution si ce délai est dépassé.
Si ton script ne peux pas être exécuté en moins de 30s, tu peux augmenter cette limite avec set_time_limit(délai_en_seconde);
En écrivant set_time_limit(0) tu enlèves complétement la limite. Tu n'as donc pas à te soucier du délai mais attention aux boucles infinies, ton script ne s'arrêtera jamais. Par prudence il vaut mieux définir une limite haute que pas de limite du tout.
Enfin tu n'as rien à mettre après // traitement. C'était uniquement pour l'exemple et il semble que tu n'es pas besoin de changer ton code : ta page s'affiche lorsque ton xml est complétement chargé.
Mais les serveurs web et les navigateurs client ont parfois leurs propres buffers sur lesquels tu ne pourras de toute façon pas intervenir.
PHP impose par défaut une limite de 30s d'exécution pour tout les scripts et arrête l'exécution si ce délai est dépassé.
Si ton script ne peux pas être exécuté en moins de 30s, tu peux augmenter cette limite avec set_time_limit(délai_en_seconde);
En écrivant set_time_limit(0) tu enlèves complétement la limite. Tu n'as donc pas à te soucier du délai mais attention aux boucles infinies, ton script ne s'arrêtera jamais. Par prudence il vaut mieux définir une limite haute que pas de limite du tout.
Enfin tu n'as rien à mettre après // traitement. C'était uniquement pour l'exemple et il semble que tu n'es pas besoin de changer ton code : ta page s'affiche lorsque ton xml est complétement chargé.