我正在尝试构建一个脚本,该脚本将从许多(50 多个)不同的外部 XML 页面中提取数据,使用 PHP 将其解析为表,并使用 cron 作业在幕后进行,因此收集的数据可以显示在我的网站没有加载延迟的用户。
此脚本的目的是收集 Steam 社区组成员名单的实时提要,显示当前在线成员和他们正在玩的游戏。它首先检查组的 XML 页面以获取更新的成员列表,然后使用该信息检查每个成员的 XML 文件以获取他们当前的在线和游戏状态。
我已经成功了一点。数据被正确加载和显示,并且没有加载延迟,大约 80% 的时间。然而,另外 20% 的时间,用户完全无法加载网站,包括加载脚本的页面部分。它只是加载所有内容,然后挂起几分钟,然后在刷新后正常工作。我一直无法复制挂断的条件,它只是偶尔随机发生。
我怀疑是运行脚本(以 3 分钟间隔)的 cron 作业导致了延迟,但这确实超出了我(已经有限)理解的范围。
有没有更好的方法来做我正在寻找的东西?或者知道是什么导致了间歇性挂断吗?
提前感谢您的帮助!
<?php
$myFile = "steamfeed.php";
$fh = fopen($myFile, 'w');
$xml = simplexml_load_file('http://steamcommunity.com/groups/sundered/memberslistxml/?xml=1');
$members = $xml->xpath('//steamID64');
foreach($members as $steamID64) {
$xml2 = simplexml_load_file('http://steamcommunity.com/profiles/'.$steamID64.'/?xml=1');
if ( $xml2->onlineState != 'offline' ) {
$steam_game = substr($xml2->inGameInfo->gameName, 0, 25);
$stringData = '<table width="280px" cellspacing="0" cellpadding="0" valign="top" style="vertical-align:text-top;"><tr><td style="background-image:url(\'http://www.thesunderedguard.com/images/statusbg.gif\');" width="288px" height="30px"><table width="100%"><tr><td width="50%" height="30px" style="text-align:left;"><a href="http://steamcommunity.com/profiles/'.$steamID64.'/" target="_blank" style="color:#CDCDCD;">'.$xml2->steamID.'</a></td><td width="50%"><a href="'.$xml2->inGameInfo->gameLink.'" target="_blank">'.$steam_game.'</a></td></tr></table></td></tr></table>';
fwrite($fh, $stringData);
}
}
fclose($fh);
?>