我想给一个带curl的网址...并根据其标题属性Expires获取它。
我想只检索过去30天内缓存的页面。
我认为有两件事是对的......
1)gmmktime(0,0,0,1,1,1998)..我不知道如何将它设置为今天 - 30天前。 2)它是否会根据其标题返回谷歌?如果网址没有日期超过30天的缓存标题<$ p>,那么$ page变量将是什么
function exractURl()
{
//How to convert gmmktime to the last 30 days from today
$ts = gmdate("D, d M Y H:i:s", gmmktime(0, 0, 0, 1, 1, 1998)) . " GMT";
$c= curl_init('http://www.google.co.il/');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_HTTPHEADER, array('Expires:'.$ts));
// What output will page give me..if the headers arent found
$page= curl_exec($c);
curl_close($c);
}
更新
function exractURl()
{
$ts = gmdate("D, d M Y H:i:s", strtotime("30 days ago")) . " GMT";
$c= curl_init('http://www.google.co.il/');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_HTTPHEADER, array('If-Modified-Since:'.$ts));
$page= curl_exec($c);
curl_close($c);
return $page;
}
答案 0 :(得分:1)
您可以使用If-Modified-Since
要求服务器仅在内容发生更改时才返回内容(否则您将收到304 Not Modified
响应)。当然,这取决于服务器的行为。有关详情,请参阅此处:http://www.mnot.net/cache_docs/
要回答关于如何获得30天前的时间的问题,您可以使用方便的strtotime
:
$ts = gmdate("D, d M Y H:i:s", strtotime("30 days ago")) . " GMT";