とある 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