我正在写一个网站,显示来自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的第二个脚本等等。