贾森·贾斯汀(Json Justin)慢



人们开始抱怨我的网站速度很慢。我需要您的帮助来确定问题。经过更好的解决方案,但没有成功,我一直在疯狂地搜索互联网上的搜索。我正在尝试获取流名,以及流媒体的justin.tv/twitch的访问者。

目前,我正在使用他们自己的API Wiki页面中启动的代码。但是,这很慢。我在MySQL数据库中存储了52个流,然后将其放入数组中,然后使用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设置每个频道的类型。我也没有尝试过,速度差异并不多。因此,仍然需要时间来加载。这是我使用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>";

很可能问题是,从api.justin.tv的数据进行轮询需要很长时间(与代码的其余F相比)。HTTP连接需要一些时间。当数据拉动时,没有什么可以显示的,因此用户会经历较长的等待时间。

有几种解决方案。您不应每次用户打开网站,而是定期加载API信息。您可以每5分钟下载数据,也可以使用CRON作业每隔几分钟或几秒钟将其拉动(取决于值的变化速度)并将数据存储在数据库表中。

如果数据存储在您的服务器上(即使在慢速文件系统上),它将更快。

相关内容

  • 没有找到相关文章

最新更新