我想知道我能做些什麼來不對API進行多次調用?例如,如果我嘗試使用yelp的api,那麼它們在超出前會有一個限制的通話(一旦超過該數字,它們就會停止向您提供信息)。PHP處理API不超過它的限制?
我該怎麼辦?現在,我有這樣的(從他們的API PHP的例子)中,我需要得到從他們的網站信息的每一頁:
// For example, request business with id 'the-waterboy-sacramento'
//$unsigned_url = "http://api.yelp.com/v2/business/the-waterboy-sacramento";
// For examaple, search for 'tacos' in 'sf'
//$unsigned_url = "http://api.yelp.com/v2/search?term=tacos&location=sf";
// My own code
$unsigned_url = "http://api.yelp.com/v2/search?term=".$term."";
// $term is coming from searching
// Set your keys here
$consumer_key = "some_id";
$consumer_secret = "some_id";
$token = "some_id";
$token_secret = "some_id";
// Token object built using the OAuth library
$token = new OAuthToken($token, $token_secret);
// Consumer object built using the OAuth library
$consumer = new OAuthConsumer($consumer_key, $consumer_secret);
// Yelp uses HMAC SHA1 encoding
$signature_method = new OAuthSignatureMethod_HMAC_SHA1();
// Build OAuth Request using the OAuth PHP library. Uses the consumer and token object created above.
$oauthrequest = OAuthRequest::from_consumer_and_token($consumer, $token, 'GET', $unsigned_url);
// Sign the request
$oauthrequest->sign_request($signature_method, $consumer, $token);
// Get the signed URL
$signed_url = $oauthrequest->to_url();
// Send Yelp API Call
$ch = curl_init($signed_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch); // Yelp response
curl_close($ch);
,這似乎過分的每一頁做時,我想打電話給某商業。
你有沒有我可以查看的參考資料?謝謝 – hellomello
@andrewliu不是真的,這對我來說很自然......而且我是個不好的老師:)你必須進入API調用的中間並緩存到數據庫。然後,在將來的調用中,檢查參數散列是否匹配並從數據庫返回結果,而不是進行實時調用......但還要設置過期時間,以便最終刷新數據。你需要使用一個數據庫和一個函數來處理這個調用,以允許輕鬆緩存。查看mysqli對象並從那裏開始。但也許你會在這裏找到關於SO的提示。 – CodeAngry
@andrewliu增加了一些代碼。一探究竟! – CodeAngry