人們開始抱怨我的網站速度,它很慢。我需要你的幫助來確定問題。在一個更好的解決方案後,我一直在尋找互聯網像瘋了一樣,但沒有成功。我正在試圖從justin.tv/twitch獲取流媒體名稱和流式播放器的訪問人數。json justin慢
當前我正在使用自己的API維基頁面中的入門代碼。然而,它非常緩慢。我有52個流存儲在mySQL數據庫中,我將其放入數組中,然後使用json來解析數據。
<?php
$result = mysql_query("SELECT streamname FROM streams") or die(mysql_error());
$ids=array();
while($row = mysql_fetch_assoc($result))
{
$ids[]=$row["streamname"];
}
$stream_list = implode(",", $ids);
$mycurl = curl_init();
curl_setopt ($mycurl, CURLOPT_HEADER, 0);
curl_setopt ($mycurl, CURLOPT_RETURNTRANSFER, 1);
//Build the URL
$url = "http://api.justin.tv/api/stream/list.json?channel=" . $stream_list;
curl_setopt ($mycurl, CURLOPT_URL, $url);
$web_response = curl_exec($mycurl);
$results = json_decode($web_response);
foreach($results as $s)
{
echo "<a href='stream.php?watch=" . $s->channel->login . "'>" . $s->channel->login . " " . $s->channel_count . " viewers</a><br />";
}
?>
更新。是的,我使用我的MySQL來設置每個通道的類別類型。我也沒有嘗試過,速度差別不大。所以它仍然是需要時間加載的json。下面是我如何使用MySQL
$result = mysql_query("SELECT streamname FROM streams WHERE race = 'terran' OR race = 'protoss' OR race = 'zerg'") or die(mysql_error());
$ids=array();
while($row = mysql_fetch_assoc($result))
{
$ids[]=$row["streamname"];
}
$stream_list = implode(",", $ids);
$mycurl = curl_init();
curl_setopt ($mycurl, CURLOPT_HEADER, 0);
curl_setopt ($mycurl, CURLOPT_RETURNTRANSFER, 1);
//Build the URL
$url = "http://api.justin.tv/api/stream/list.json?channel=" . $stream_list;
curl_setopt ($mycurl, CURLOPT_URL, $url);
$web_response = curl_exec($mycurl);
$results = json_decode($web_response);
echo "<div id=\"tab1\">";
foreach($results as $s)
{
// get race
$sql = mysql_query("SELECT race, streamname, name FROM streams WHERE streamname = '" . $s->channel->login . "'") or die(mysql_error());
$row = mysql_fetch_array($sql, MYSQL_BOTH);
$race = $row['race']; // race
$streamername = $row['name'];
echo "race: " . $race . " <a href='stream.php?watch=" . $s->channel->login . "'>" . $row['name'] . " " . $s->channel_count . " viewers</a><br />";
}
echo "</div>";
如果您需要從數據庫中提取所有記錄來完成您的工作,您首先需要的是DB?把這些數據放在代碼中 –
你的代碼對我來說看起來非常簡潔,你已經用逗號分開了,而不是52個API調用,只做了1次API調用。你只需要分析你的代碼,看看它的緩慢部分是什麼,如果它的API調用沒有多少你可以做的;最好的辦法就是緩存API調用的結果,並在CURL調用中設置一個超時,如果CURL調用需要更長的時間,那麼X的秒數就會超時,您可以使用緩存的結果來顯示。 –
謝謝。我會研究這個。 – mpj