Php json_解码响应是否为空

Php json_解码响应是否为空,php,mysql,json,Php,Mysql,Json,我刚刚开始真正使用json,并尽可能地学习!我想和大家分享我的工作,我觉得这需要一些改进,如果不是很多的话 好吧,我使用twitch.tv REST\u API。这是我的密码。基本上,我想通过我的网络托管公司以crontab的形式每分钟运行一次。我知道您可以通过这种方式获得(编码的)json数据:http://api.justin.tv/api/stream/list.json?channel=example,例2,例3”;也而且可能更快?但是我不知道如何在数据库中将我的流设置为脱机 所以我想我

我刚刚开始真正使用json,并尽可能地学习!我想和大家分享我的工作,我觉得这需要一些改进,如果不是很多的话

好吧,我使用twitch.tv REST\u API。这是我的密码。基本上,我想通过我的网络托管公司以crontab的形式每分钟运行一次。我知道您可以通过这种方式获得(编码的)json数据:http://api.justin.tv/api/stream/list.json?channel=example,例2,例3”;也而且可能更快?但是我不知道如何在数据库中将我的流设置为脱机

所以我想我要问的是我该如何改进这个

$result = mysql_query("SELECT streamname FROM streams") or die(mysql_error());

$ids=array(); 
while($row = mysql_fetch_assoc($result))  
{
    $ids[]=$row["streamname"]; 
}

$mycurl = curl_init();
for($i=0;$i<count($ids);$i++)
{

    curl_setopt ($mycurl, CURLOPT_HEADER, 0);
    curl_setopt ($mycurl, CURLOPT_RETURNTRANSFER, 1); 

    $url = "http://api.justin.tv/api/stream/list.json?channel=$ids[$i]";
    curl_setopt ($mycurl, CURLOPT_URL, $url);

    $web_response =  curl_exec($mycurl);
    $result = json_decode($web_response);

    if(empty($result))
    {
        $sql = "UPDATE streams SET online = '0' WHERE streamname = '" . $ids[$i] . "'";
    }
    else
    {
        $sql = "UPDATE streams SET online = '1' WHERE streamname = '" . $ids[$i] . "'";
    }
    mysql_query($sql) or die(mysql_error());
}
$result=mysql\u query(“从流中选择streamname”)或die(mysql\u error());
$ids=array();
while($row=mysql\u fetch\u assoc($result))
{
$ids[]=$row[“streamname”];
}
$mycurl=curl_init();

对于($i=0;$i显然,您希望将API结果中未显示的频道标记为脱机,而另一种方式是,将仍显示的频道标记为联机

首先是评论中已经提到的注释。请不要再使用PHP的mysql扩展。这是不推荐的,将在PHP的未来版本中删除。我推荐MySQLi:

目前,您正在获取每个频道的数据,这当然会减慢进程,并不必要地增加justin.tv服务器的负载

查询状态时,限制是GET请求的最大大小,在大多数服务器上为8192字节


现在,检查结果与<代码>空 >您可以考虑所有的通道脱机,然后循环结果,并再次标记结果中的通道。在数组或对象中这样做(可以是您的数据库结果,获取您的频道列表)并在一个查询中更新所有频道。

您正在使用并且应该使用。您还容易受到现代API的攻击,因为现代API会使您更容易使用。感谢您的帮助,现在看来很明显,我应该使用这种方法!但我不知道,谢谢。我会检查它。:)