音乐服务器(Music Server)是指一个提供音乐在线服务的服务器,它包括高端提供门户服务的网站、Web数据库和低端的操作平台、硬件设施 。当前,在Internet和Intranet上有不少这样的站点,特殊是在一些高速宽带的局域网中(如校园网),音乐服务器给上网的朋友提供了休闲娱乐的好去处,同时也给网站带来了较高的
拜访率 。
----像
其余站点一样,音乐服务器包括网站和硬件两个
部分 。硬件性能和服务器效率是成正比的,
因此如何构建网站才是一个音乐服务器的
要害 。从当前来看,网站
根本有两
品种型:一种是运行在Unix / Linux环境下,采纳Perl / C / Php / Java 等作CGI编程语言;一种是运行在Win NT Server 平台上,采纳ASP / WinCGI 作
后盾语言 。前者运行效率高,但
构造复杂,
比较
合适大型站点;后者编程难度
绝对较低,而且采纳ODBC驱动接口,数据库衔接容易,特殊
合适作音乐服务器 。
----一个
根本的音乐服务器包括音乐在线观赏、音乐排行榜、音乐主题检索和音乐下载等四个
部分 。下面将主要从技术角度来
探讨如何实现以上
性能 。
音乐主题数据库的规划
----音乐主题数据库是Web站点存储所需音乐
材料的仓库,它的规划在很大程度上影响了整个网站的
构造和效率 。数据库中
可以
径自建成一张表单,也
可以以主键和外键的
模式建成多张表单 。本例中为
注明上的
便捷,建成如下单表框架: (music.mdb)
音乐在线观赏
----在线观赏是指客户端利用播放器播放服务器端的音乐文件 。其原理是当客户端向服务器提交音乐选单后,服务器生成相应的.m3u文件,并将该文件通过Http
协定下行至客户端;客户端将被引发调用相应的播放器执行该文件,从而实现了音乐在线观赏
性能 。当前
支撑.m3u文件的播放器有Winamp、RealPlayer G2、 Musicmatch等 。当这些播放器软件被正确安装在客户端时,就
可以自动播放.m3u文件 。所以解决问题的
要害在于
后盾如何生成.m3u文件并下行到客户端 。以下利用ASP中内置的FileSystem组件给出一种解决
方案,并给出相应程序 。
<%
dim choose,path,mydb,myset,SQL,fs,mp3
‘#####
获得list.htm表单
当选中的歌曲项
对应的id号,并赋给字串变量choose #####
choose=“("
for i=3 to request.form.count
choose=choose+request.form(i)+“,"
next
choose=left(choose,len(choose)-1)+“)"
‘##### 推断choose变量,假如不包括任何id号,
注明list.htm中没有选中任何歌曲,终止程序#####
if choose=“()" then
response.redirect(“list.htm")
response.end
end if
‘#####设置文件路径,需求把temp目录的权限设为
对internet匿名消费者
存在read & write 权限 #####
path=“E:\inetpub\wwwroot\temp\"
‘#####
缔造文件对象 #####
Set fs = CreateObject(“Scripting.FileSystemObject")
Set mp3 = fs.CreateTextFile(path+“listen.m3u", True)
‘#####
缔造数据库对象#####
set mydb=server.createobject(“adodb.connection")
mydb.open “music"
‘##### 检索数据库,
获得歌曲信息 #####
SQL=“select mp3name,url from "&dbname&
“where id in "&choose
set myset=tdb.execute(SQL)
do while not myset.eof
‘##### 生成点播歌曲文件列表 #####
mp3.Write(“http://"+myset(“url")+chr(10))
myset.movenext
loop
‘##### 更新数据库中的当天点播次数和
总共点播次数 #####
SQL=“update music set click=click+1,
this=this+1 where id in "&choose
mydb.execute(SQL)
‘#####
取缔对象 #####
set myset=nothing
mydb.close
set mydb=nothing
mp3.close
set mp3=nothing
‘##### 将该文件下载给消费者#####
response.redirect(“listen.m3u")
response.end
%>
----
留神:利用这种
步骤时,要操纵.m3u文件Http头的内容 。在Winnt中可利用IIS设置.m3u文件类型的Mine内容 。具体操作如下:启动IIS —> 选中音乐服务器所在的Web站点 —> 点击“属性” 按钮 —> 在浮现的属性选项卡中点击“Http
题目”卡 —> 点击“文件类型”按钮 —> 点击“新增类型”按钮 —> 在“相应的
扩大名”中填入“.m3u”,在“内容类型”中填入“audio/mpegurl” —>
而后一路确定即可 。
音乐排行榜
----音乐排行榜是音乐服务器不可
缺乏的一项内容,其主要性不亚于一个站点的Pageview 。它
可以向歌迷即时提供信息、
疏导观赏、动态地反映潮流趋向 。
在众多的音乐服务器中,排行榜也是竟相
革故鼎新的地方,
存在很高的点击率 。普通说来,排行榜包括总共点播次数、当天点播次数、总共下载次数等内容 。具体的实现
步骤
比较
容易 。在单表中
可以利用如下SQL语句:select * from music order by total_click 。若是多表,则
可以利用带join子句的联合
查问SQL语句 。假如要限定
查问记录数,可采纳count()
集中函数 。如在本例中,假如要
查问当天点播次数前20名的歌曲,可采纳如下语句:select top 20 * from music order by total_click desc 。排行榜的
性能主要取决于主题数据库的规划如何,你
可以依据需求增删字段,以实现相应
性能(如添加进榜
工夫、歌手
材料、名次
变迁等等),所
波及的SQL语句也不会过于复杂 。总之,排行榜是体现一个音乐网站特点所在,
可以
自由
施展 。
音乐主题检索
----提到检索,众多人
立即联想到Yahoo、Soho等
驰名站点,而且颇有奥秘之感 。其实,查找引擎在数据库中并
非难事,由于数据库内置的数据引擎已经提供了很好的
根底 。查找效率的
高下取决于数据库的性能和SQL语句的效率 。在前台,
可以提供一系列的检索
名目和条件选项 。在
后盾,则依据前台提交的表单,生成相应的
查问语句在数据库中执行,并将
查问
后果返回 。
比方在前台提交的表单为:检索
名目=“歌手姓名”,内容=“张学友”,匹配条件=“全字匹配”,则
后盾生成的SQL 语句为:select * from music where singer=‘张学友' order by edition,id asc,这样就
可以检索出张学友的全部歌曲信息,并按专集分类返回 。又如前台要
查问的歌手姓名为“齐秦”,且歌曲名称带有“雨”字的全部歌曲(即要求含糊匹配),则
后盾生成的SQL语句为: select * from music where singer =‘齐秦' and mp3name like ‘%雨%' order by id asc ,将返回“冬雨”、“太阳雨”、“无情的雨无情的你”等等 。
惟独
使用适当的技巧和灵便的 SQL语句,就
可以让你的主题检索
施展得
酣畅淋漓 。
音乐下载
性能
----提供音乐下载
性能,同样是音乐服务器的一个
根本
性能,特殊是对远程消费者,将喜欢的歌曲下载后
威力观赏 。
普通有两种
模式提供下载,一种是直接通过Http和阅读器下载,另一种是将曲库开发为Ftp目录,通过ftp
协定下载 。本例中采纳前一种
模式,而且在数据库中对下载次数进行跟踪记录 。有些站点还依据需求对歌曲进行压缩加密,将密码提供应正式消费者,也是一条可取之道 。本例中程序如下:
<%
‘#####
获得歌曲
标记号id #####
id=request(“id")
set tdb=server.createobject(“adodb.connection")
tdb.open “music"
SQL=“select mp3url from music where id ="&id
set tset=tdb.execute(SQL)
if tset.eof then
response.end
else
‘##### 更新数据库中歌曲的下载次数 #####
SQL=“update music set total_down=total_down
+1 where id ="&id
tdb.execute(SQL)
downfile=tset(“url")
tdb.close
set tset=nothing
set tdb=nothing
end if
if downfile=“" or isnull(downfile) then response.end
downfile=“http://"+downfile
‘##### 下载相应歌曲 #####
response.redirect(downfile)
response.end
%>
----以上步骤就构建了一个
根本的音乐服务器 。固然,一个
完全的音乐服务器还
可以包括歌手信息、歌迷论坛、聊天室、投票站、娱乐新闻网等等
性能,都
可以用ASP逐个实现 。本文限于篇幅,不再
详尽
探讨 。
惟独前台页面采纳独特的
格调设计和完善的JavaScript程序操纵,
后盾编程
使用灵便的SQL语句和
壮大的ASP组件,加之规划周到的Web数据库和
丰硕的创意,就能构建一个
圆满的音乐服务器 。感兴趣的朋友
不妨试试看,你会制造一个
奇观的!