0

我想给一个带有 curl.. 的 url 并根据其标题属性 Expires 获取它。

我只想在最近 30 天内缓存该页面时才检索该页面。

有两件事我认为不对...

1) gmmktime(0, 0, 0, 1, 1, 1998).. 我不知道如何将其设置为今天 - 30 天前。2)它是否会根据其标题返回我谷歌?如果 url 没有日期超过 30 天的缓存标头,$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;
   }
4

1 回答 1

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";
于 2012-05-03T09:34:11.180 回答