Php xml和json请求速度慢的问题

Php xml和json请求速度慢的问题,php,mysql,xml,json,cron,Php,Mysql,Xml,Json,Cron,我在写一个网站,它展示了来自Own3d和Twitch的一些实时流。我对own3d和twitch api的xml和json请求速度慢有一些问题,所以我联系了own3d。他们非常友好,这是他们的回答: 你好,雅各布 我们的API响应时间是正常的,但是您可能遇到的问题 体验是因为您每次都在请求信息 您的网站已刷新 大多数其他网站,如clgaming.net,都有一个 cron作业运行,大约每分钟收集一次信息 哪些流是联机和脱机的,并写入本地数据库 因此,当有人加载网站时,它会很快 尊敬的own3D.t

我在写一个网站,它展示了来自Own3d和Twitch的一些实时流。我对own3d和twitch api的xml和json请求速度慢有一些问题,所以我联系了own3d。他们非常友好,这是他们的回答:

你好,雅各布

我们的API响应时间是正常的,但是您可能遇到的问题 体验是因为您每次都在请求信息 您的网站已刷新

大多数其他网站,如clgaming.net,都有一个 cron作业运行,大约每分钟收集一次信息 哪些流是联机和脱机的,并写入本地数据库 因此,当有人加载网站时,它会很快

尊敬的own3D.tv支持团队

这就是我所做的,我编写了一个PHP脚本,将信息写入我的Mysql数据库,稍后当我将网站上线时,我将对其进行cronjob,它工作正常,但随着我的数据库越来越大,我现在再次遇到问题: 现在我的数据库中有65条拖缆,我想我又遇到了请求时间问题。首先,我收到了错误消息:

致命错误,超过了30秒的最大执行时间

我认为没问题,让我们把最长的执行时间。(
ini\u集('max\u execution\u time',300);

现在发生的是,我得到了不工作请求的随机错误

例如:

警告: 文件\u获取\u内容(http://api.justin.tv/api/stream/list.json?channel=schabs) [函数.文件获取内容]: 无法打开流:HTTP请求失败!HTTP/1.1400错误请求 在第20行的D:\wamp\www\Lol Streamportal\database\u implementize.php中

Own3d和twitch都会出现这种情况,正如我所说的,哪些流可以工作,哪些流不能工作是随机的。实际上,我认为应该可以让它工作得更好,因为clgaming f.ex有1000多个流,如果在cronjob脚本中在线,可能需要检查这些流

在我再次联系own3d或twitch之前,我想问你们,因为我对XML和Json都没有经验,也许你们中的一些人知道如何修复它,或者也许我不应该用PHP编写脚本,而应该用JDBC之类的工具来编写

我不想炫耀我的全部代码,但我可以给你造成问题的函数的代码。(如果真的需要,我也可以发布其他代码)

正如我所说,当我的数据库较小时,我一点问题都没有。但由于我收到了50多份参赛作品,我开始遇到问题。 谢谢你的回答

编辑:
我刚有个主意。也许twitch.tv和Own3d在一段时间内允许发送的请求数量有限,也许我会就此联系他们。要解决这个问题,我可以编写2到3个不同的脚本,只发送对数据库中前30个条目的请求,第二个脚本发送对下30个条目的请求,依此类推。

您存储了多少数据?你能减少吗?你在用指数吗?DB中使用的是什么类型的存储引擎?我有3个表,两个表有20个条目,一个表有65个条目,我无法缩减它。是的,我对每个条目都使用索引,但我不知道我在数据库中使用的是哪个存储引擎。(我使用MySQL)但我实际上不认为DB存储是问题所在,所有查询似乎都工作得很好,我认为是XML和Json请求导致了问题。请记住,您的存储引擎可能是个问题。如果您使用MyISAM,它将在删除或更新等更改期间锁定整个表。如果要使用InnoDB,它将只锁定正在修改的行。
function get_online($stream_id, $typ) {
    // Ownd3d Streams
    if($typ == 'o') {
        $xml = simplexml_load_file('http://api.own3d.tv/liveCheck.php?live_id='.$stream_id);
        $isLive = $xml->liveEvent->isLive;
        if($isLive == 'true') {
            return true;    
        }
        else {
            return false;   
        }
    }
    // Twitch Streams
    else if($typ == 't') {
        $api = "http://api.justin.tv/api/stream/list.json?channel=".$stream_id;
        $json = file_get_contents($api);
        $exist = strpos($json, $stream_id);
        if($exist) {
            return true;
        }
        else{
            return false;  
        }       
    }
    else {
        return false;   
    }
}