可能だとは思いませんが、ダウンロードせずにページサイズを取得する方法はありますか?(ばかげているようですが、とにかくここで聞きたいです)
ページをカールしてサイズを取得することはできますが、ページをDLしたくありません。また、テキスト/htmlのヘッダーには何も興味深いものはありません。
Content-Length
ページ ヘッダーからプロパティをクエリします。
Hypertext Transfer Protocol Documentation のセクション 14.13 で定義されています。
HEAD
の代わりに HTTP メソッドを使用しGET
ます。
HEAD メソッドは、サーバーが応答でメッセージ本文を返してはならないことを除いて、GET と同じです。HEAD リクエストに応答して HTTP ヘッダーに含まれるメタ情報は、GET リクエストに応答して送信される情報と同一である必要があります。このメソッドは、エンティティ本体自体を転送せずに、リクエストによって暗示されたエンティティに関するメタ情報を取得するために使用できます。
HEAD リクエストを行っても、出力で content-length が得られることは保証されません。自分で確認してください:
stream_context_set_default(
array(
'http' => array(
'method' => 'HEAD'
)
)
);
var_dump(get_headers("http://www.stackoverflow.com", 1));
var_dump(get_headers("http://www.google.com", 1));
var_dump(get_headers("http://php.net/", 1));
最良の選択肢は、curlを使用してページをダウンロードしてから、ページのサイズ(純粋なテキスト)を確認することだと思います