これが状況です。Icecastサーバーでホストされているラジオストリームをホストするページを作成しています。私はプレーヤーをうまく機能させ、PHPスクリプトを組み合わせて、サーバーからさまざまなデータポイントを抽出して解析しました。現在のトラック、リスナーの数などの情報。
ここに問題があります。ページを最初に開いたときは正常に読み込まれますが、これらの変数を5〜10秒ごとに更新し、ページを完全に再読み込みせずに新しい情報でページを更新する方法がわかりません(これは結局のところ、ラジオ局であり、10秒ごとに局を再バッファリングする必要があるのは現実的ではありません。
さまざまな試みがコードから削除された後、これまでのところ、これが私が持っているものです。何か案は?私はそれが1つまたは2つの変数に対して行われるのを見てきましたが、ここにはほぼ1ダースあります...
<div id="current_song"></div>
<script language="javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script language="javascript">
{
$.ajax({
type: 'POST',
url: 'script.php',
data: 'getLatestInfo',
dataType: 'json',
cache: false,
success : function(dp){
$.getJSON('script.php', function(dp) {
//'data' will be the json that is returned from the php file
$.("#current_song").html("dp[9]");
});
getlatest();
};
});
}
</script>
これがPHPパーサーです
<?php
Function getLatestInfo() {
$SERVER = 'http://chillstep.info:1984';
$STATS_FILE = '/status.xsl?mount=/test.mp3';
$LASTFM_API= '27c480add2ca34385099693a96586bd2';
//create a new curl resource
$ch = curl_init();
//set url
curl_setopt($ch,CURLOPT_URL,$SERVER.$STATS_FILE);
//return as a string
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//$output = our stauts.xsl file
$output = curl_exec($ch);
//close curl resource to free up system resources
curl_close($ch);
//loop through $ouput and sort into our different arrays
$dp = array();
$search_for = "<td\s[^>]*class=\"streamdata\">(.*)<\/td>";
$search_td = array('<td class="streamdata">','</td>');
if(preg_match_all("/$search_for/siU",$output,$matches)) {
foreach($matches[0] as $match) {
$to_push = str_replace($search_td,'',$match);
$to_push = trim($to_push);
array_push($dp,$to_push);
}
}
$x = explode(" - ",$dp[9]);
echo json_encode($dp);
}
?>
まだきれいに見えないことは知っていますが、それがCSSの目的です。
何か案は?基本的に、オーディオタグに触れることなく、PHPスクリプトを再実行し、変数を更新し、テキスト出力を再構築する必要があります。