伺服器
---- 音樂伺服器(Music Server)是指一個提供音樂線上服務的伺服器,它包括高端提供門戶服務的網站、Web資料庫和低端的操作平台、硬體設施。目前,在Internet和Intranet上有不少這樣的網站,特別是在一些高速寬頻區域網路中(如校園網),音樂伺服器給上網的朋友提供了休閑娛樂的好去處,同時也給網站帶來了較高的訪問率。
----像其他網站一樣,音樂伺服器包括網站和硬體兩個部分。硬體效能和伺服器效率是成正比的,因而如何構建網站才是一個音樂伺服器的關鍵。從目前來看,網站基本有兩種類型:一種是運行在Unix / Linux環境下,採用Perl / C / Php / Java 等作CGI程式設計語言;一種是運行在Win NT Server 平台上,採用ASP / WinCGI 作後台語言。前者運行效率高,但結構複雜,比較適合大型網站;後者編程難度相對較低,而且採用ODBC驅動介面,資料庫連接方便,特別適合作音樂伺服器。
----本文將以ASP 5.0為編程環境、Mircosoft Access 97為Web 資料庫、Win NT Server 4.0為運行平台,舉例說明音樂伺服器的構建步驟。
----一個基本的音樂伺服器包括音樂線上欣賞、音樂熱門排行榜、音樂主題檢索和音樂下載等四個部分。下面將主要從技術角度來討論如何?以上功能。
音樂主題資料庫的規劃
----音樂主題資料庫是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資料庫和豐富的創意,就能構建一個完美的音樂伺服器。有興趣的朋友不妨試試看,你會創造一個奇蹟的!