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 : 446
Taille : 63,9 Ko

Merci d'avance de bien vouloir apporter votre aide.

Cordialement