27c98b7f51c2975a2eff44df926b1a06.jpg
 

bit.ly 是一個很多人使用的短網址網站,如果要接他的 API 到你的網站的話也很簡單。但是如果連同樣的網址都要呼叫 API ,那對你網站的 loading 就重了!

以下的程式不是僅僅呼叫而已,還包括把呼叫完的資料存起來,遇到相同網址時就直接使用 cache 的即可。

define('SHORTEN_URL', 'http://api.bit.ly/v3/shorten');
define('LOGIN_ID','your login id');
define('APIKEY','your API key');
define('CACHE_DIR','cache/shorten/'); // cache path
 
class ShortenerUtilHelper
{
    static function MakeApiCall($url)
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        if( ! $result = curl_exec($ch))
            echo "curl_error : " . curl_error($ch);
        else
            return $result;
    }
 
    static function GetSortener($url)
    {
        $url = urlencode($url);
        $apiurl = SHORTEN_URL . "?login=" . LOGIN_ID . "&apiKey=" . APIKEY . "&longUrl=$url&format=txt";
 
        // make cache
        $md5 = md5($url);
        $cache_file = CACHE_DIR . "$md5.php";
 
        if(file_exists($cache_file))
            return file_get_contents($cache_file);
        }
        else
        {       
            @mkdir(CACHE_DIR,0777);
 
            $shorturl = ShortenerUtilHelper::MakeApiCall($apiurl);
 
            $fp = fopen($cache_file, 'w');
            fwrite($fp, $shorturl);
            fclose($fp);
             
            return $shorturl;
        }       
    }
 
}
 

使用時直接呼叫即可。例:

$url = "http://www.snippetinfo.net";
$shorten_url = ShortenerUtilHelper::GetSortener ( $url );
Facebook 討論區載入中...