缓慢的xml和json请求的问题

时间:2012-12-27 17:01:20

标签: php mysql xml json cron

我正在写一个网站,显示来自Own3d和Twitch的某种直播。我有一些问题,自己的3D和twitch api的xml和json请求很慢,所以我联系了Own3d。他们非常友好,这就是他们的回应:

  

Hello Jakob,

     

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

     

其他大多数网站都做了什么,比如clgaming.net就有了    cron作业运行,每分钟大约收集一次信息    哪些流在线和离线,并写入本地数据库    所以当有人加载网站时它很快。

     

此致,拥有自己的3D支持团队

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

  

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

我认为没有问题可以让最长的执行时间到来。 (ini_set('max_execution_time', 300);

现在发生的是,我得到了无效请求的随机错误。

例如:

  

警告:   的file_get_contents(http://api.justin.tv/api/stream/list.json?channel=schabs)   [function.file-GET-内容]:   无法打开流:HTTP请求失败! HTTP / 1.1 400错误请求   在第20行的D:\ wamp \ www \ Lol Streamportal \ database_actualize.php

它发生在Own3d和twitch上,正如我所说的随机哪些流将起作用,哪些不起作用。实际上我认为它应该可以让它更好地工作,因为clgaming f.ex有超过1,000个流,如果在他们的cronjob脚本中在线可能需要检查。

在我联系own3d或者再次抽搐之前我想过我问你们,因为我对XML没有任何经验,也没有Json,也许有些人有想法如何解决它,或者我应该写脚本不在PHP中,而是在JDBC中等等?

我不想炫耀我的整个代码,但我可以给你导致问题的函数代码。 (如果真的需要我也可以发布其他代码)

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;   
    }
}

正如我所说,当我的数据库较小时,我根本没有问题。但是因为我收到了50多个条目,所以我开始遇到问题。 谢谢你的答案。

编辑: 我刚才有个主意。也许twitch.tv和Own3d在一段时间内允许发送的请求数量有限,也许我会联系他们。我可以解决这个问题的一件事是编写2或3个不同的脚本,这些脚本只会查询数据库中前30个条目的请求,下一个30的第二个脚本等等。

0 个答案:

没有答案