多くの (50 以上) の異なる外部 XML ページからデータを取得し、PHP を使用してテーブルに解析し、cron ジョブを使用して舞台裏で実行するスクリプトを作成しようとしています。ユーザーの読み込み遅延のないサイト。
このスクリプトの目的は、Steam コミュニティ グループのメンバー名簿のライブ フィードを作成し、現在オンラインのメンバーと彼らがプレイしているゲームを表示することです。まずグループの XML ページをチェックして更新されたメンバー リストを取得し、次にその情報を使用して個々のメンバーの XML ファイルをチェックし、現在のオンラインおよびゲームのステータスを取得します。
私はある程度成功しています。約 80% の確率で、データは正しく読み込まれ、読み込みの遅延もなく表示されます。ただし、残りの 20% の時間では、ユーザーは、スクリプトが読み込まれるページの部分を超えて Web サイトを完全に読み込むことができなくなります。その時点まですべてをロードし、数分間ハングしてから、更新後に適切に機能します。ハングアップの条件を再現することはできませんでした。頻繁にランダムに発生するだけです。
スクリプトを (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);
?>