Regarding the 20071101 note of "root at mantoru dot de":
That solution got me started but didn't quite work for me. Apache (at least 2.x) applies an algorithm to the Last-Modified time. A solution that worked perfectly for me is at http://us3.php.net/manual/en/function.fileinode.php#78264.
Richard
http_match_etag
(PECL pecl_http >= 0.1.0)
http_match_etag — ETag を比較する
説明
bool http_match_etag
( string
$etag
[, bool $for_range = false
] )指定された ETag を、クライアントの HTTP ヘッダ If-Match あるいは If-None-Match と比較します。
パラメータ
-
etag -
比較する ETag。
-
for_range -
TRUEに設定すると、通常は HTTP の範囲を検証するために使用されるヘッダが チェックされます。
返り値
ETag が一致する場合やヘッダにアスタリスク ("*")
が含まれる場合に TRUE、それ以外の場合に FALSE を返します。
参考
- http_match_last_modified()
- http_match_request_header() - 任意のヘッダを比較する
- http_cache_etag() - ETag でキャッシュする
- http_cache_last_modified() - 最終更新日時でキャッシュする
- ob_etaghandler() - ETag 出力ハンドラ
php dot net at eoasys dot com
04-Apr-2008 05:16
root at mantoru dot de
31-Oct-2007 11:46
An Apache-like ETag can be generated like this:
<?php
function etag($filename, $quote = true) {
if (!file_exists($filename) || !($info = stat($filename))) {
return false;
}
$q = ($quote) ? '"' : '';
return sprintf("$q%x-%x-%x$q", $info['ino'], $info['size'], $info['mtime']);
}
?>
