选择不同歌曲时播放列表中的问题

时间:2009-07-13 06:21:11

标签: php html xml flash

实际上在我的网站www.musicking.in当用户选择歌曲时,将打开一个播放器窗口并将访问相应的所选歌曲xml播放列表,播放器将播放这些歌曲。

实际上它的工作正常。 但有时候问题是当有这么多用户正在播放没有播放所选歌曲的播放器时,无论是之前他选择的歌曲还是什么都不播放。

请帮帮我。

{我的播放器代码}

<?php
if(isset($_POST["song"])&& $_POST['song'] != "") 
    {
        $song = $_POST["song"];
    }
    else {$song=array();} 

$dom = new DOMDocument("1.0");
// display document in browser as plain text 
// for readability purposes

// create root element
$root = $dom->createElement("playlist");
$dom->appendChild($root);
$root->setAttribute('version', "1");
$root->setAttribute('xmlns', "http://xspf.org/ns/0/");
$rootnext = $dom->createElement("trackList");
$root->appendChild($rootnext);
foreach ($song as $counter) {
    $tokens = ",";
    $tokenized = strtok($counter, $tokens);
// create child element

$song = $dom->createElement("track");
$rootnext->appendChild($song);
$song1 = $dom->createElement("creator");
$song->appendChild($song1);
$text = $dom->createTextNode("www.musicking.in");
$song1->appendChild($text); 
$song1 = $dom->createElement("title");
$song->appendChild($song1);
// create text node
$text = $dom->createTextNode($tokenized);
$song1->appendChild($text); 
$tokenized = strtok($tokens);
$song1 = $dom->createElement("location");
$song->appendChild($song1);
$text = $dom->createTextNode($tokenized);
$song1->appendChild($text); 

}
// save 
$dom->save("playlist.xml");
?>
<object data="musicplayer.swf?autostart=true&playlist=playlist.xml" type="application/x-shockwave-flash" width="400" height="300"><param name="movie" value="musicplayer.swf?autostart=true&playlist=playlist.xml"/></object>




{sample playlist.xml}

<?xml version="1.0"?>
<playlist xmlns="http://xspf.org/ns/0/" version="1"><trackList><track><creator>www.musicking.in</creator><title>Ey Yavo </title><location>/telugusongs/prayanam/Ey Yavo.mp3</location></track><track><creator>www.musicking.in</creator><title>Meghamaa </title><location>/telugusongs/prayanam/Meghamaa.mp3</location></track><track><creator>www.musicking.in</creator><title>Nuvvu Entha </title><location>/telugusongs/prayanam/Nuvvu Entha.mp3</location></track></trackList></playlist>

2 个答案:

答案 0 :(得分:2)

看起来总是使用文件playlist.xml,因此如果有10k访问者,则单个文件被覆盖10k次。通常没有问题,但互联网很慢,所以如果你点击你的网站,生成xml并加载swf然后使用xml。它有延迟,如果一次点击并且在他的播放器加载另一个创建一个xml之前它可能会出现问题。 我建议你使用变量文件名(可以是随机文件名) 你可能需要一次又一次地清理旧文件

答案 1 :(得分:0)

这是快速修复,但你真的需要考虑这个。

只留下该文件:

if(isset($_POST["song"])&& $_POST['song'] != "") 
    {
        $song = $_POST["song"];
    }
    else {$song=array();} 
<object data="musicplayer.swf?autostart=true&playlist=playlist.php?song=<?=$song; ?>"      type="application/x-shockwave-flash" width="400" height="300"><param name="movie"   value="musicplayer.swf?autostart=true&playlist=playlist.php?song=<?=$song; ?>"/></object>

然后制作包含所有生成内容的playlist.php文件:

if(isset($_GET["song"])&& $_GET['song'] != "") 
    {
        $song = $_GET["song"];
    }
    else {$song=array();}

....old generation code....
// Instead of saving it now, you just echo it. 
echo $dom->saveXML();

这只是非常快速的修复,我不能保证它会起作用,因为它取决于你的音乐播放器如何读取文件。但这就是你想要的方式。您想根据歌曲参数生成播放列表文件并将其回显给浏览器。