2016-10-26 13 views
-1

URLのダウンロードサイズの合計を求める質問もあります。しかし、そのURLがスクリプトに渡された場合、JPGファイルやGIFファイルのような単一のファイルリソースを指しているだけなのでしょうか?さて、単一のファイルリソースに対して、特定のファイルのサイズを見つけて答えとして返すだけで済みます。しかし、HTML文書の我々は、組み込みおよびページに含まれているすべてのリソースの合計サイズを見つけると答えContent-LengthというHTTPヘッダーでファイルのダウンロードサイズを見つけるにはどうすればよいですか?

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'];  

} 

答えて

-3

としてget_headers関数は引数としてURLを受け入れることを返す必要があります。だから、検索するためのPHPコードは「Content-Length」ヘッダは、この

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']; 


} 
+0

ありがとうございます。解決策を教えてください。 –

+1

これは全く質問に答えません。あなたは文字通り質問からコードをコピーして貼り付けました。コード内で – Brad

+0

エラーが見つかりました。これを解決しました。 'return $ headers ['Content-Length'];' –

2

のようになります。これは実際には本当に複雑な問題、そして決定的な答えを持っていないものです。あなたがルックアップしなければならないことがたくさんあるので、私はステップを歩みます。

  1. 元のページHTMLをダウンロードしてください。
  2. 実際にHTMLを解析して要素のグラフにするには、DOMパーサを使用します。
  3. 各要素を繰り返し、気になる外部リソースをダウンロードしてください。これは、<img><video><script>、などのsrc属性です。<link rel="stylesheet" href="..." />にできるCSSを忘れないでください。

これはすべてではありません。あなたは今新しい問題を抱えています。 JavaScriptがより多くのスクリプトを読み込むとどうなるでしょうか?多分、AJAX経由でデータを追加しますか?おそらく、CSSはいくつかのグラフィックや他のCSSを参照していますか?多分埋め込みフォントですか?

さらに悪いことに、時にはこれらのことがタイムアウトします。場合によっては、ユーザーとのやり取りが行われるまで、または読み込まれてから数秒後にスクリプトに何かがロードされないことがあります。

さらに、読み込まれたすべてのアイテムがそれ自身のものを持ち込むことができることを忘れないでください。

PhantomJSのようなヘッドレスブラウザを使用してページを読み込んでスクリプトを実行させ、ダウンロードされたすべてのリソースを追跡するのが最も良い方法です。それから、数秒間待ってから(またはページロードが必要になるまで)、それを追加します。しかし、ページが完了したときに言うべき愚かな証拠の決定的な時間はありません。

関連する問題