everyday cycling! ぼくらはみんな走ってるはいろんな方法でデータを取得しているけど、headリクエストでLast-Modifiedが返ってくるものはそれで取得している。ところが、その一つでエラーがでていた。
wgetで-dオプションをつけて画面を見てみると、どうやらDNS情報がIPV6のアドレスにまず向いいていて、そちらでの接続を試みた後でエラーがでたらセカンダリーであるIPV4のアドレスで接続するもよう。これまでのスクリプトではうまくいかない。そこでwgetでヘッダを取得して、そのリザルトから更新日を抽出するというパターンを作ってみた。
<?php switch($kind1){ case "W": $result = exec("wget -S --spider $check_url 2>&1|grep Last-Modified: |sed -e 's/Last-Modified://'"); $date_str = $result; if($date_str == ""){ $stat="ERROR";break; } $date_unix=strtotime($date_str); if(date_j($date_unix) != $date){ $date = date_j($date_unix); $data = date_j($date_unix); } break; } ?>
今考えると最初からこれでもよかったんではと思ったが、よく考えたら元々はwindowsで動かしていて、windowsではgrepやsedの標準がなくって思い思いの仕様になっていたから避けていたんだった。