Attente du chargement du fichier xml
Résolu/Fermé
nanaval31
Messages postés
20
Date d'inscription
jeudi 12 juin 2014
Statut
Membre
Dernière intervention
23 juin 2014
-
Modifié par nanaval31 le 23/06/2014 à 11:24
nanaval31 Messages postés 20 Date d'inscription jeudi 12 juin 2014 Statut Membre Dernière intervention 23 juin 2014 - 23 juin 2014 à 17:24
nanaval31 Messages postés 20 Date d'inscription jeudi 12 juin 2014 Statut Membre Dernière intervention 23 juin 2014 - 23 juin 2014 à 17:24
A voir également:
- Attente du chargement du fichier xml
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Fichier host - Guide
7 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
23 juin 2014 à 11:35
23 juin 2014 à 11:35
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
nanaval31
Messages postés
20
Date d'inscription
jeudi 12 juin 2014
Statut
Membre
Dernière intervention
23 juin 2014
23 juin 2014 à 11:43
23 juin 2014 à 11:43
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
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
23 juin 2014 à 12:01
23 juin 2014 à 12:01
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;
nanaval31
Messages postés
20
Date d'inscription
jeudi 12 juin 2014
Statut
Membre
Dernière intervention
23 juin 2014
Modifié par nanaval31 le 23/06/2014 à 14:29
Modifié par nanaval31 le 23/06/2014 à 14:29
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
nanaval31
Messages postés
20
Date d'inscription
jeudi 12 juin 2014
Statut
Membre
Dernière intervention
23 juin 2014
23 juin 2014 à 14:48
23 juin 2014 à 14:48
Autre chose, qu'est ce que je dois mettre après // traitement ?
Le code qui génère mon xml ?
Le code qui génère mon xml ?
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
23 juin 2014 à 17:22
23 juin 2014 à 17:22
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é.
nanaval31
Messages postés
20
Date d'inscription
jeudi 12 juin 2014
Statut
Membre
Dernière intervention
23 juin 2014
23 juin 2014 à 17:24
23 juin 2014 à 17:24
Ok je te remercie !
Tes explications sont très claires :) Merco
Tes explications sont très claires :) Merco