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 :

PHP, Json , tableaux (POO) [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 28
    Points : 16
    Points
    16
    Par défaut PHP, Json , tableaux (POO)
    Bonsoir,

    Je sollicite votre aide car j'ai du mal à utiliser une méthode en PHP concernant l'API de WebPageTest (lien).

    Toutes les données que l'on souhaite voir ou garder sont dans :

    "$reponse -> data" comme par exemple, au début, lorsqu'on lance le test et qu'il se finit, on obtient un ID de ce test :

    "$testId = $reponse -> data -> testId"

    Celui-ci nous sert en suite à récupérer les données analysées dans "$response = $wpt->getTestResults($test_id)".

    En faite, l'API fait en sorte d'utiliser le JSON en ligne (donné ci-dessous) et grâce à $reponse->data[...] on obtient les résultats que l'on souhaite telle que le temps d'affichage du site.

    Je ne sais pas trop comment faire... Il faut tout mettre dans un tableau ? Chercher les valeurs une par une comme j'ai fais ?

    Voici mon code : (l'ID correspond à l'identifiant du test réalisé du site en question)

    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
    21
    22
    23
    24
    25
    $test_id='180605_G7_bed851a21eadf7995909b59fcac99212';
    /* ------- Attente & récupération des resultats ---------- */
    if ($response = $wpt->getTestResults($test_id)) {
        $statut_code = $response->statusCode;
        $statut_text = $response->statusText;
        while ($statut_code != 200 && $statut_text != 'Test Complete') {
            $response = $wpt->getTestResults($test_id);
            $statut_code = $response->statusCode;
            $statut_text = $response->statusText;
            $message = "Veuillez patientez svp... Statut du code actuel :" . $statut_code . " et statut du texte : " . $statut_text . "<br /><br />";
            echo $message;
        }
        //On récupère les résultats
        echo "Statut du test : " . $statut_code . "";
        echo "<br /><br />";
        echo "Statut du test : " . $statut_text . "<br />";
        //return json_decode(json_encode($data),true);
        //echo "<br /><br />";
        //return array($data);
        //echo "<br /><br />";
    }
    $fullyLoaded=($response->data->average->firstView->fullyLoaded)/1000;
    echo "FullyLoaded Time = ".$fullyLoaded." secondes";
    $e = $response->data->average;
    var_dump($e);
    Voici ce que j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Statut du test : 200
     
    Statut du test : Test Complete
    FullyLoaded Time = 8.4666666666667
    secondesobject(stdClass)#1011 (1) { ["firstView"]=> object(stdClass)#1010 (128) { ["minify_total"]=> int(-1) ["responses_200"]=> float(78.666666666667) ["testStartOffset"]=> int(0) ["bytesOut"]=> float(60617.666666667) ["gzip_savings"]=> int(0) ["requestsFull"]=> float(80.666666666667) ["start_epoch"]=> int(0) ["connections"]=> int(16) ["cpu.EventDispatch"]=> int(8) ["bytesOutDoc"]=> float(57071.666666667) ["result"]=> int(0) ["score_cookies"]=> int(-1) ["basePageSSLTime"]=> int(383) ["docTime"]=> float(6149.6666666667) ["domContentLoadedEventEnd"]=> int(3203) ["image_savings"]=> int(20158) ["cpu.XHRReadyStateChange"]=> float(2.3333333333333) ["requestsDoc"]=> int(78) ["cpu.v8.compile"]=> int(41) ["cpu.CommitLoad"]=> int(0) ["firstMeaningfulPaint"]=> float(2971.3333333333) ["cpu.FunctionCall"]=> int(416) ["firstTextPaint"]=> int(2793) ["firstPaint"]=> float(2792.7333333331) ["cpu.ParseAuthorStyleSheet"]=> float(27.333333333333) ["score_cdn"]=> float(66.333333333333) ["cpu.Idle"]=> float(6683.3333333333) ["cpu.ParseHTML"]=> int(57) ["optimization_checked"]=> int(1) ["image_total"]=> int(1486841) ["score_minify"]=> int(-1) ["cpu.ScriptWrappableMarkingVisitor::performLazyCleanup"]=> int(0) ["gzip_total"]=> float(550100.66666667) ["cpu.MajorGC"]=> int(4) ["responses_404"]=> int(0) ["cpu.ResourceSendRequest"]=> int(0) ["cpu.Layout"]=> float(263.66666666667) ["loadTime"]=> float(6149.6666666667) ["cpu.ThreadState::completeSweep"]=> int(2) ["cpu.ThreadState::performIdleLazySweep"]=> float(3.3333333333333) ["score_combine"]=> int(-1) ["firstContentfulPaint"]=> int(2793) ["cpu.PlatformResourceSendRequest"]=> float(11.666666666667) ["firstLayout"]=> float(2701.6666666667) ["score_etags"]=> int(-1) ["loadEventStart"]=> float(6149.6666666667) ["cpu.EvaluateScript"]=> float(268.33333333333) ["minify_savings"]=> int(-1) ["score_progressive_jpeg"]=> int(85) ["domInteractive"]=> float(3134.3333333333) ["score_gzip"]=> int(100) ["cpu.Paint"]=> float(220.66666666667) ["score_compress"]=> int(99) ["domContentLoadedEventStart"]=> float(3134.6666666667) ["cpu.ResourceChangePriority"]=> int(0) ["cpu.MinorGC"]=> float(39.333333333333) ["cpu.UpdateLayoutTree"]=> int(213) ["bytesInDoc"]=> float(2113333.3333333) ["firstImagePaint"]=> int(3111) ["score_keep-alive"]=> int(100) ["loadEventEnd"]=> float(6151.6666666667) ["cached"]=> int(0) ["score_cache"]=> float(13.333333333333) ["cpu.BlinkGCMarking"]=> float(28.333333333333) ["responses_other"]=> int(2) ["cpu.UpdateLayerTree"]=> int(102) ["cpu.TimerFire"]=> float(75.666666666667) ["fullyLoaded"]=> float(8466.6666666667) ["requests"]=> float(80.666666666667) ["final_base_page_request"]=> int(3) ["TTFB"]=> int(1673) ["cpu.XHRLoad"]=> int(0) ["bytesIn"]=> float(2116308.3333333) ["test_run_time_ms"]=> float(15388.666666667) ["fullyLoadedCPUms"]=> float(7092.6666666667) ["PerformancePaintTiming.first-contentful-paint"]=> float(2792.7333333331) ["date"]=> float(1528206735.2822) ["PerformancePaintTiming.first-paint"]=> float(2792.7333333331) ["domElements"]=> int(1392) ["fullyLoadedCPUpct"]=> float(33.957363633267) ["domComplete"]=> float(6147.3333333333) ["Colordepth"]=> int(24) ["lastVisualChange"]=> int(5800) ["visualComplete"]=> int(5800) ["render"]=> float(2866.6666666667) ["SpeedIndex"]=> float(3824.3333333333) ["visualComplete85"]=> float(5766.6666666667) ["visualComplete90"]=> float(5766.6666666667) ["visualComplete95"]=> float(5766.6666666667) ["visualComplete99"]=> int(5800) ["chromeUserTiming.redirectStart"]=> int(3) ["chromeUserTiming.redirectEnd"]=> int(893) ["chromeUserTiming.fetchStart"]=> int(893) ["chromeUserTiming.unloadEventStart"]=> float(1680.6666666667) ["chromeUserTiming.unloadEventEnd"]=> float(1680.6666666667) ["chromeUserTiming.domLoading"]=> int(1690) ["chromeUserTiming.responseEnd"]=> float(1934.6666666667) ["chromeUserTiming.firstLayout"]=> float(2701.6666666667) ["chromeUserTiming.firstPaint"]=> float(2792.3333333333) ["chromeUserTiming.firstContentfulPaint"]=> float(2792.3333333333) ["chromeUserTiming.firstTextPaint"]=> float(2792.3333333333) ["chromeUserTiming.firstMeaningfulPaintCandidate"]=> float(2970.6666666667) ["chromeUserTiming.firstMeaningfulPaint"]=> float(2970.6666666667) ["chromeUserTiming.firstImagePaint"]=> float(3110.3333333333) ["chromeUserTiming.domInteractive"]=> int(3134) ["chromeUserTiming.domContentLoadedEventStart"]=> int(3134) ["chromeUserTiming.domContentLoadedEventEnd"]=> int(3203) ["chromeUserTiming.domComplete"]=> float(6147.3333333333) ["chromeUserTiming.loadEventStart"]=> float(6149.6666666667) ["chromeUserTiming.loadEventEnd"]=> int(6151) ["TTIMeasurementEnd"]=> float(10481.333333333) ["LastInteractive"]=> float(5512.6666666667) ["run"]=> int(2) ["step"]=> int(1) ["effectiveBps"]=> int(326940) ["effectiveBpsDoc"]=> float(472125.33333333) ["domTime"]=> int(0) ["aft"]=> int(0) ["titleTime"]=> int(0) ["domLoading"]=> int(0) ["server_rtt"]=> int(0) ["smallImageCount"]=> int(17) ["bigImageCount"]=> int(3) ["maybeCaptcha"]=> int(0) ["chromeUserTiming.InteractiveTime"]=> float(3414.3333333333) ["FirstInteractive"]=> int(3415) ["TimeToInteractive"]=> int(3415) ["avgRun"]=> int(3) } }
    Voici à quoi ressemble le JSON (exemple) OU le JSON réel (par rapport à mon code) de l'analyse du site en ligne se trouve ici -> lien / Sinon directement sur le site -> webpagetest.org :

    Nom : forum.png
Affichages : 401
Taille : 63,9 Ko

    Merci d'avance de bien vouloir apporter votre aide.

    Cordialement

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Si cela renvoie un json, il suffit alors de le transformer en tableau, comme par exemple :

    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
     
    <?php
     
    //récupère le json
    $file = file_get_contents('http://www.webpagetest.org/jsonResult.php?test=180605_G7_bed851a21eadf7995909b59fcac99212');
    //le transforme en array
    $json = json_decode($file,true);
     
    //affiche le loadTime
    echo $json['data']['runs'][1]['firstView']['loadTime'];
     
    //Affiche tout le tableau
    echo '<pre>';
    var_dump($json);
    echo '</pre>';

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Bonsoir,

    Merci infiniment pour votre réponse ! C'est exactement ce que je souhaitais essayer . C'est parfait !

    Merci encore, bonne soirée à vous !

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Bonjour
    Si vous voulez récupérer toutes les valeurs load time et load start presente dans firstView

    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
    21
     
        $file = file_get_contents('http://www.webpagetest.org/jsonResult.php?test=180605_G7_bed851a21eadf7995909b59fcac99212');
        //le transforme en array
        $json = json_decode($file, true);
     
        $json = $json['data']['runs'][1]['firstView'];
        $loadTime = [];
        $load_start = [];
        // recupere le loadTime et le load start
        array_walk_recursive($json, function($val, $key) use (&$loadTime, &$load_start) {
            $val = (int)$val;
            if ($key == 'loadTime' && $val != 0):
                $loadTime[] = $val;
            elseif ($key == 'load_start' && $val != 0):
                $load_start[] = $val;
            endif;
        });
     
       // affiche les valeurs
        var_dump($loadTime);
        var_dump($load_start);

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Bonsoir,

    Merci beaucoup c'est parfait ! Je commence à comprendre le fonctionnement c'est super .
    Merci pour votre aide, je vous souhaite une bonne soirée et une bonne continuation .
    Cordialement

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    merci bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 7] Utilisation d'API en PHP
    Par PetiteFlamme31 dans le forum Langage
    Réponses: 32
    Dernier message: 25/05/2018, 20h54
  2. Wikiloc : exemple d'utilisation des API SFR dans un script PHP
    Par hhoareau dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 22/02/2011, 11h16
  3. Wikiloc : exemple d'utilisation des API SFR dans un script PHP
    Par hhoareau dans le forum Téléchargez
    Réponses: 0
    Dernier message: 22/02/2011, 11h16
  4. [Java] Utiliser une API Java en PHP
    Par Antoun dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 22/10/2007, 12h19
  5. Cherche à utiliser l'API de PHP
    Par loupin dans le forum Langage
    Réponses: 6
    Dernier message: 10/08/2006, 18h56

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