とある kenkooooさんのAtCoderProblems の Datasetが更新されたら取得する、というプログラムを組もうと思いました。
どうやったら更新情報を取得できるのか……
っ file_get_contents使うと $http_response_header がついてくるよ
という情報があったんですが、file_get_contents使っちゃうとなぁ…… 目的のデータは460MB以上 なんだよねぇ……
更新情報を取得するためだけに何度も460MBの転送を発生させてしまうと、kenkooooさんに戦車砲 でやられてしまうような気がしたので、別の方法を。
get_headers()
get_headers
を使います。
get_headers
を使って、 $http_response_header
と同等の情報を取得します。
ヘッダ情報取得だけなので、本体をダウンロードする必要はありません。
(file_get_contents
を使うと45秒ほどかかりましたが、 get_headers
の方なら約0.2秒でした)
ヘッダ情報の中の、 Last-Modified
が最終更新日時です。
サンプル
<?php
$url = "https://s3-ap-northeast-1.amazonaws.com/kenkoooo/atcoder.sql";
$data = get_headers($url, 1);
$time_modify = $data['Last-Modified'];
echo date("Y-m-d H:i:s", strtotime($time_modify));
- 実行結果
2019-08-13 03:42:06