如何在PHP中获取外部网页大小和加载时间

时间:2017-02-09 07:13:34

标签: php curl http-headers

如何在php中获取加载时间和页面大小。 我正在使用以下技术来获得加载时间但我们有更好的选择来计算加载时间。(任何从头或其他技术获得加载时间的技术)

$t = microtime( TRUE );
$file = file_get_contents( "http://google.com/" );
print_r($file );
$t = microtime( TRUE ) - $t;
print "It took $t seconds!";

我只需要确认这是否是正确的技术,或者我们有更好的选择以及如何在php中计算网页大小。

获取页面大小的代码

$url = 'http://xAppsol.com/';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);

$response = curl_exec($ch);

$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
print_r($header_size);

此代码提供的标题大小为Kb,但如何检查网页上的图像和视频的大小。如何计算网页上所有内容的确切大小,以MB为单位。

1 个答案:

答案 0 :(得分:0)

据我所知,你需要解析页面并获得每个元素的大小。

$url = 'http://google.com/';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$subject = curl_exec($curl);
//get the download size of page
print("Download size: " . curl_getinfo($curl, CURLINFO_SIZE_DOWNLOAD) .'<br>');

preg_match_all('/(?:src=)"([^"]*)"/m', $subject, $matchessrc);

preg_match_all('/link.*\s*(?:href=)"([^"]*)"/m', $subject, $matcheslink);

$matches = array_merge($matchessrc[1], $matcheslink[1]);

$domain = parse_url($url, PHP_URL_SCHEME). '://'.parse_url($url, PHP_URL_HOST);
$path = parse_url($url, PHP_URL_PATH);

$checked = array();
foreach($matches as $m)
{
    if($m[0] == '/')
        $m = $domain.$m;
    elseif(substr($m, 0, 5) != 'http:' and substr($m, 0, 6) != 'https:')
        $m = $domain.'/'.$path.'/'.$m;

    if(in_array($m, $checked))
        continue;

    $checked[] = $m;

    $curl = curl_init($m);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    $subject = curl_exec($curl);
    //get the download size of element
    print("Download size: " . curl_getinfo($curl, CURLINFO_SIZE_DOWNLOAD) .'<br>');
}

这将在<link>(通常是css)中搜索表单src元素(通常是图像和脚本)和href。