2017-10-11 1 views
1

Ich weiß, ich könnte die gesamte Website Ladezeit für eine externe URL nur mit so etwas wie messen:Maßnahme Page Speed ​​„wait“ in PHP

$start_request = time(); 
file_get_contents($url); 
$end_request = time(); 
$time_taken = $end_request - $start_request; 

Aber ich brauche nicht die gesamte Website laden, mag ich messen nur die Server-Antwortzeit, wie es hier in der „warte“ -Teil des Ergebnisses angezeigt ist:

http://www.bytecheck.com/results?resource=https://www.example.com

Wie kann ich dies tun mit php?

+7

vielleicht möchten Sie sehen [micro()] (http://php.net/manual/en/function.microtime.php) statt 'time()'. – CD001

+2

Mögliche Duplikate von [So erhalten Server-Antwortzeit mit PHP] (https://stackoverflow.com/questions/34059737/how-to-get-server-response-time-using-php) –

+0

Wenn Sie feinkörnig wollen Statistiken wie Zeit bis zum ersten Byte, müssen Sie eine niedrigere Bibliothek wie [Curl] (http://php.net/manual/en/book.curl.php) verwenden. Die 'curl_get_info'-Funktion wird das haben, was Sie brauchen. – iainn

Antwort

2

Sie können dies nicht mit PHP so tun. Mit time() oder microtime() können Sie nur die komplette Zeit abrufen, die ein oder mehrere Befehle benötigt haben.

Sie benötigen ein Tool, mit dem Sie Zugriff auf die Netzwerkschichtdaten haben. cURL kann das für Sie tun, aber Sie müssen enable php curl, wenn es nicht schon fertig ist.

PHP kann dann das Ergebnis übernehmen und verarbeiten.

<?php 
// Create a cURL handle 
$ch = curl_init('http://www.example.com/'); 

// Execute 
curl_exec($ch); 

// Check if any error occurred 
if (!curl_errno($ch)) { 
    $info = curl_getinfo($ch); 
    echo 'Took ', $info['total_time'], ' seconds to send a request to ', $info['url'], "\n"; 
} 

// Close handle 
curl_close($ch); 

Sie haben eine Reihe von Informationen in $info wie

  • "filetime"
  • "TOTAL_TIME"
  • "namelookup_time"
  • "connect_time"
  • "Vorübertragung_Zeit "
  • "starttransfer_time"
  • "redirect_time"

Die komplette Liste gefunden werden konnte here

Die "Wait" Zeit der starttransfer_time sein sollte - pretransfer_time, so in Ihrem Fall benötigen Sie:

$wait = $info['starttransfer_time'] - $info['pretransfer_time']; 
+0

Toll, vielen Dank! – Werner

Verwandte Themen