Php 如何在HTTP头上找到名为Content Length的文件的下载大小?

Php 如何在HTTP头上找到名为Content Length的文件的下载大小?,php,html,http,header,Php,Html,Http,Header,这个问题还要求我们找到URL的总下载大小。但是,如果传递到脚本中的URL只指向一个文件资源(如JPG文件或GIF文件),该怎么办?对于单个文件资源,我们只需要找到特定文件的大小,然后返回它作为答案,我们就完成了。但是,对于HTML文档,我们需要找到页面上嵌入和包含的所有资源的总大小,并将其作为答案返回 function get_remote_file_size($url) { $headers = get_headers($url, 1); if (isset($header

这个问题还要求我们找到URL的总下载大小。但是,如果传递到脚本中的URL只指向一个文件资源(如JPG文件或GIF文件),该怎么办?对于单个文件资源,我们只需要找到特定文件的大小,然后返回它作为答案,我们就完成了。但是,对于HTML文档,我们需要找到页面上嵌入和包含的所有资源的总大小,并将其作为答案返回

function get_remote_file_size($url) {

    $headers = get_headers($url, 1);

    if (isset($headers['Content-Length'])) 

        //checks for lower case "L" in Content-length:
    if (isset($headers['Content-length'])) 
           return $headers['Content-length'];    

}

get_headers函数接受URL作为参数。因此,检索“
Content Length
”标题的PHP代码如下所示

function get_remote_file_size($url) {

$headers = get_headers($url, 1);

if (isset($headers['Content-Length'])) 
       return $headers['Content-Length'];

    //checks for lower case "L" in Content-length:
if (isset($headers['Content-length'])) 
       return $headers['Content-length'];


}

这实际上是一个非常复杂的问题,而且没有明确的答案。有很多东西你需要向上看,所以我会带你走过台阶

  • 下载原始页面HTML
  • 使用DOM解析器将HTML实际解析为元素图
  • 迭代每个元素,并下载您关心的任何外部资源。这将是
    等的
    src
    属性。不要忘记可以是
    的CSS
  • 但这并不是一切。你现在有了一个新问题。如果JavaScript加载更多脚本会怎么样?也许它通过AJAX添加数据?也许CSS引用了一些图形或其他CSS?也许是嵌入式字体

    更糟糕的是,有时这些事情是定时的。有时,在用户交互之前,或者在加载几秒钟之后,脚本才会加载某些内容

    除此之外,别忘了,每一个新加载的项目都可以带来自己的东西。(例如,广告通常会装载数兆的东西。)


    最好的办法是使用PhantomJS这样的无头浏览器,加载页面并让脚本运行,并跟踪下载的所有资源。然后,等待几秒钟(或者直到页面加载触发,如果您愿意的话),然后将其相加。但是,没有傻瓜式的确切时间来确定页面何时完成。

    感谢@Hitesh提供的解决方案这根本不能回答问题。您已经从问题中复制并粘贴了代码。在代码中发现了一些错误,我已经解决了这个问题<代码>返回$headers['Content-Length']是的,这对我很有帮助