実際にダウンロードせずにcURLを使用してリモートファイル「compiler-latest.zip」(googlecode.com)のファイルサイズを取得しようとしています。これが私のPHPコードです。
$url = 'http://closure-compiler.googlecode.com/files/compiler-latest.zip';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // optional
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // optional
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // optional
$result = curl_exec($ch);
$filesize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
print 'Filesize: ' . $filesize . '<br><br>';
print_r($result);
しかし、このエラー404ドキュメントのファイルサイズ(1379バイト)で「HTTP /1.1404NotFound」ステータスが表示されます。したがって、(CURLOPT_NOBODY、0)を設定すると、ファイルがダウンロードされ、正しいファイルサイズ(現在は3820320バイト)が返されます。私の質問は、「compiler-latest.zip」ファイルをダウンロードせずに正しいファイルサイズを取得する方法です。
重要:このコードは、googlecode.com以外の他のURLでも期待どおりに機能します。