2017-10-11 11 views
1

에서 "대기"측정 페이지 속도가 난 그냥 같은과 외부 URL에 대한 총 사이트 로딩 시간을 측정 할 수 알고 PHP

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

하지만 전체 사이트 로딩을하지 않아도, 내가 원하는

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

가 어떻게 PHP를 사용하여이 작업을 수행 할 수가 결과의 "대기"part의 여기에 표시된 것처럼 단지 서버 응답 시간을 측정?

+7

[microtime()] (http://php.net/manual/en/function.microtime.php)보다는 'time()'. – CD001

+2

[PHP를 사용하여 서버 응답 시간을 얻는 방법] (https://stackoverflow.com/questions/34059737/how-to-get-server-response-time-using-php) –

+0

의 가능한 복제본 원하는 경우 세분화 된 첫 번째 바이트까지의 시간과 같은 통계를 보려면 [Curl] (http://php.net/manual/en/book.curl.php)과 같은 하위 레벨 라이브러리를 사용해야합니다. 'curl_get_info' 함수는 필요한 것을 가질 것입니다. – iainn

답변

2

PHP에서는 그렇게 할 수 없습니다. time() 또는 microtime()을 사용하면 하나 이상의 명령이 수행 한 전체 시간 만 가져올 수 있습니다.

네트워크 계층 데이터에 액세스 할 수있는 도구가 필요합니다. cURL은이 작업을 수행 할 수 있지만 아직 수행하지 않은 경우 enable php curl해야합니다.

PHP는 결과를 가져 와서 처리 할 수 ​​있습니다.

<?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); 

당신은

  • "FILETIME"
  • "TOTAL_TIME"
  • "namelookup_time"
  • "connect_time"
  • 같은 $info에서 정보의 무리가 "pretransfer_time "
  • "starttransfer_time "
  • "대기 "시간 starttransfer_time해야한다"전체 목록은 here

    (가) 볼 수 있습니다

"redirect_time - pretransfer_time, 그래서 귀하의 경우에 당신이 필요 :

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

정말 고마워요! – Werner