IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

file_get_contents() et caractères en début et fin de chaînes


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Par défaut file_get_contents() et caractères en début et fin de chaînes
    Bonjour,

    Je cherche à récupérer le flux à l'adresse suivante : http://umespe.com/index.php?page=newsrss&type=1

    Pour cela, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $timestamp = time();
    $opts = array(
        'http'=> array(
                            'method' => "GET"
    	              )
    );
    $context = stream_context_create($opts);
     
    $xml = file_get_contents("http://umespe.com/index.php?page=newsrss&type=1", false, $context);
    echo time() - $timestamp; // Temps d'exécution
    echo "<hr />";	
    foreach($http_response_header as $header)
    {
        echo $header, "<br />";
    }
    echo "<hr />";
    echo htmlentities($xml, ENT_COMPAT, "UTF-8");
    Lorsque j'affiche dans mon navigateur le flux, celui est correct et chargé en 0.5s.
    Lorsque j'affiche mon flux appelé depuis le script, j'ai une chaîne avant l'en-tête XML et un 0 à la fin du flux m'empêchant d'analyser le flux. Le flux met 15s à se charger.

    HTTP/1.1 200 OK
    Date: Tue, 11 May 2010 15:38:22 GMT
    Server: Apache/2.2.11 (Debian) PHP/5.2.11-2 with Suhosin-Patch
    X-Powered-By: PHP/5.2.11-2
    Status: 200 OK
    Transfer-Encoding: chunked
    Content-Type: application/xml; charset=utf-8
    Je m'arrache les cheveux à essayer de comprendre d'où cela provient.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 714
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 714
    Par défaut
    j'ai l'impression que ces caractères viennent du protocole HTTP/1.1 mais je ne suis pas sûr, il faudrait trouver un moyen de forcer à HTTP/1.0 pour être sûr

    dans tous les cas si tu utilises cURL le problème ne se pose plus. soit parce qu'il utilise HTTP/1.0, soit parce qu'il gère HTTP/1.1 et qu'il fournit le bon résultat.
    cerise sur le gâteau, tout ça se fait en une seconde mais je ne sais pas d'où vient ce gain de temps

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    $timestamp = time();
     
    $url = 'http://umespe.com/index.php?page=newsrss&type=1';
     
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
     
    $xml = curl_exec($ch);
     
    if (curl_errno($ch)) {
        trigger_error(curl_error($ch), E_USER_WARNING);
    }
     
    curl_close($ch);
     
    echo time() - $timestamp; // Temps d'exécution
    echo "<hr />";    
     
    echo htmlentities($xml, ENT_COMPAT, 'UTF-8');

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Par défaut
    Malheureusement je n'ai pas cURL d'activer sur le serveur.
    Et le palliatif pour décoder la réponse HTTP/1.1 est disponible uniquement à partir de PHP 5.3.0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // Create a stream
    $opts = array(
      'http'=>array(
    	'method' => "GET",		
    	'protocol_version' => '1.1'
    	  )
    );
     
    $context = stream_context_create($opts);
    $xml = file_get_contents("http://umespe.com:80/index.php?page=newsrss&type=1", false, $context);
    Mais je reste à 15s de chargement et avec un zéro à la fin.

Discussions similaires

  1. Caractères d'échapement et fin de chaîne
    Par Franck.H dans le forum C
    Réponses: 3
    Dernier message: 04/10/2013, 16h19
  2. Ajouter un caractère en début et fin de cellule
    Par snoopy69 dans le forum Excel
    Réponses: 2
    Dernier message: 09/12/2008, 21h01
  3. Réponses: 5
    Dernier message: 18/10/2006, 10h01
  4. Réponses: 2
    Dernier message: 05/01/2006, 14h15
  5. Remplacer dans une chaine de caractères à partir de la fin
    Par daddyel dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/01/2006, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo