2.檢查要求檔案是否過期
3.重新要新的或將cache給client
<?php
////////////////////////////
//將從http(或其他)讀來的檔案
//使用範例
// http://api.taipeibus.kasper.com.tw/?url=http://tw.yahoo.com/
// http://api.taipeibus.kasper.com.tw/?url=http://imp.5284.com.tw:3621/TaipeiBusService/Route.aspx?DataFormat=json
////////////////////////////
function outputHttpResult($url)//您想抓取的網址
{
//檔案名稱
$filename = "./cache/".str_replace("http://imp.5284.com.tw:3621/TaipeiBusService/", "", $url).".html";
//檢查檔案時間
$filetime = filemtime($filename);
if($filetime == 0)
{
//無此檔案 要新的
getApiResultAndSave($url);
}
else
{
//檔案是否過期
if((mktime() - $filetime) >= 30)
{
//超過30秒 要新的
getApiResultAndSave($url);
}
else
{
//還沒超過30秒 給cache的檔案
readCacheFileAndEcho($filename);
}
}
}
//取得http資源存檔並回給client
function getApiResultAndSave($url)
{
//檔案名稱
$filename = "./cache/".str_replace("http://imp.5284.com.tw:3621/TaipeiBusService/", "", $url).".html";
$buffer = file($url); //將網址讀入buffer變數
for($i = 0; $i < sizeof($buffer); $i++) //將每段文字讀出來,以換行為單位,sizeof會傳回共有幾筆
{
echo $buffer[$i]; //全部印出來
}
// 要寫入的內容
for($i = 0; $i < sizeof($buffer); $i++) //將每段文字讀出來,以換行為單位,sizeof會傳回共有幾筆
{
$word .= $buffer[$i]; //全部接起來
}
//$word = $buffer;
$fh = fopen($filename, "w");
fwrite($fh, $word);
fclose($fh);
}
//讀出舊的檔案並回給client
function readCacheFileAndEcho($filename)
{
$fh = @fopen($filename,"r") or die("READ FILE ERROR!");
if($fh)
{
while(!feof($fh))
{
echo fgets($fh);
}
}
fclose($fh);
}
?>
沒有留言:
張貼留言