SQLの窓

2014年08月01日


PHP : リモートのファイルサイズを取得する

PHP のオンラインマニュアルの投稿データにあります。( CTRL+F で Here's the best way をサーチ )
<?php
$remoteFile = '対象 URL(http)';
$ch = curl_init($remoteFile);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);
if ($data === false) {
  echo 'cURL failed';
  exit;
}

$contentLength = 'unknown';
$status = 'unknown';
if (preg_match('/^HTTP\/1\.[01] (\d\d\d)/', $data, $matches)) {
  $status = (int)$matches[1];
}
if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
  $contentLength = (int)$matches[1];
}

echo 'HTTP Status: ' . $status . "\n";
echo 'Content-Length: ' . $contentLength;
?>
Here's the best way (that I've found) to get the size of a remote file
なんて書いてあるのですが、確かにうまくいきます。当たり前と言えばあたりまえですが、An HTTPD でログを取るとこんな感じです。
<<< s=300: Fri Sep 18 23:30:20 2009 <<<
HEAD /php/elenat.ttf HTTP/1.1
Host: localhost
Accept: */*

>>> s=300: Fri Sep 18 23:30:20 2009 >>>
HTTP/1.1 200 Document follows
MIME-Version: 1.0
Server: AnWeb/1.42p
Date: Fri, 18 Sep 2009 14:30:20 GMT
Content-Type: application/octet-stream
Accept-Ranges: bytes
Content-Length: 5116536
ETag: "43a96df0-4e1278"
Last-Modified: Wed, 21 Dec 2005 15:00:00 GMT
レスポンスはすぐに返ってきます。実際使う場合は、curl が使えるか事前にチェックする必要がありますが、たぶん大丈夫でしょう。ですが、Windows の場合は意図的に使えるようにする必要があります(php.ini でextension=php_curl.dll)。こちらは、実際にそのへんを考慮して作ったサンプルです
【PHP + 通信の最新記事】
posted by lightbox at 2014-08-01 12:17 | PHP + 通信 | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり