2012-09-28 66 views

回答

3

檢查CURLINFO_FILETIME

$ch = curl_init('http://www.mysite.com/index.php'); 
curl_setopt($ch, CURLOPT_FILETIME, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_NOBODY, true); 
$exec = curl_exec($ch); 

$fileTime = curl_getinfo($ch, CURLINFO_FILETIME); 
if ($fileTime > -1) { 
    echo date("Y-m-d H:i", $fileTime); 
} 
+0

它完美的工作,但我現在有另一個問題! 我試圖獲得更改文件的日期,如: http://streaming204.radionomy.com:80/LoveHitsRadio 我獲得這個日期1970-01-01 00:59:59當然是錯的!我該怎麼做? – user1638466

+0

我不認爲你可以這樣做,因爲這是一個流媒體廣播。很高興幫助你。 –

+0

對不起,我的意思是http://streaming204.radionomy.com:80/LoveHitsRadio.xspf – user1638466

1

先嚐試發送HEAD請求以獲取目標URL的last-modified標頭的緩存的版本比較。您也可以嘗試使用If-Modified-Since標頭,同時使用GET請求創建緩存版本,因此另一方也可以使用302 Not Modified作出響應。

發送帶有捲曲HEAD請求看起來是這樣的:

$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_NOBODY, true); 
curl_setopt($curl, CURLOPT_HEADER, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1); 
$content = curl_exec($curl); 
curl_close($curl) 

$content現在將包含返回的HTTP標頭,作爲一個長字符串,你可以看看last-modified:在這樣的:

if (preg_match('/last-modified:\s?(?<date>.+)\n/i', $content, $m)) { 
    // the last-modified header is found 
    if (filemtime('your-cached-version') >= strtotime($m['date'])) { 
     // your cached version is newer or same age than the remote content, no re-fetch required 
    } 
} 

您應該也以相同的方式處理expires標題(從標題字符串中提取值,檢查值是否在將來)

+0

我新捲曲,所以我不明白! – user1638466

+0

增加了一些代碼示例。 – complex857