當建設一個網站的時候,絕大多數時候不僅需要它能夠提供靜態網頁訪問能力,還希望它能和浏覽器用戶交互、訪問後台數據庫提供實時更新的信息等等,一句話,要提供動態網頁服務能力。這時,你是選擇傳統方式的CGI呢,還是選擇PHP、ASP等服務器端腳本呢?
■從CGI到服務器端腳本
創建動態網頁的標准方式是CGI,這種方式允許Web服務器運行一個CGI程序來回應浏覽器的請求。除了要遵從簡單的CGI標准之外,CGI程序的開發與普通程序開發沒有什麼區別。然而,隨著要生成的動態網頁的數量和復雜程度的增加,這種方式就遇到了困難。
CGI程序包括兩個主要部分,一個是程序代碼,另一個是要輸出的HTML文檔內容,可以稱作HTML代碼。最早的Web開發者既是程序員,又是網頁設計者,但是那時的頁面都比較簡單,開發者最關心的是程序代碼的問題,頁面代碼基本上不需要太多的調整。而隨著包括DHTML、javascript在內的技術發展,使得頁面可以設計得非常復雜,而由於出現了各種CGI的程序庫,程序代碼則變得簡單多了。這樣每進行一次頁面代碼的調整,CGI程序就需要改動,以至於最後在CGI程序調試中,調試HTML代碼的工作量超過了調試程序代碼的工作量。這說明在Web開發中,HTML代碼的重要性已經十分明顯,使得傳統的以程序代碼為中心的CGI程序不再是最適合的動態網頁處理方式了。
這樣,相當多的程序員對於這種調整HTML代碼的工作感到厭倦,尤其隨著Internet的商業化,編寫CGI程序和進行HTML頁面設計已經成為了兩種不同的職業。為了解決這個問題,程序員首先使用了模板文件的方法將程序代碼和HTML代碼分開,CGI程序讀取模板文件來獲得HTML代碼,從而使得在對頁面進行較小調整的時候,不需要改動CGI程序。
基本上每個程序員在自己的CGI程序中使用自定義的模板,然而,如果有一種通用的HTML模板,使用通用的程序進行預處理,這樣不就大大減少了程序設計的工作量嗎?最簡單的模板可以通過替換模板中預定義的變量來完成解釋工作,由於這種程序簡單而有效,因此就被集成在Web服務器中,以提供比CGI程序更高的效率,這就是最早的服務器端腳本。
這些早期的服務器端腳本,例如出現在ncsa httpd的SSI,只包括變量的概念,但沒有控制語句的概念。後來,不同的程序開發者重新開發了支持控制語句,甚至支持子程序的腳本解釋處理程序,使得這些程序不僅能為特定的動態網頁服務,而且能夠進行編程,因而能夠完成CGI程序能完成的所有工作,成為了一種新的編程語言。同樣是由於性能的緣故,這些程序被合並入Web服務器本身,這就它成為Web開發的一種新形式。
■來自開放資源的PHP
當前,服務器端腳本已經是開發動態網頁的常用方式,雖然CGI仍然具備靈活的優勢,但在一般情況下,使用服務器端腳本更容易和方便。然而,與CGI不同的是,服務器端腳本沒有一個統一的標准,不同的服務器端腳本使用各自的語法。當前比較常用的有:Active Server Pages(ASP),ColdFusion,Java Servlets,Personal Home Page(PHP)等。這些技術中,既包括有大公司支持的軟件,如ASP,也包括通過Internet進行合作開發的開放源代碼軟件,如PHP。
PHP正是這樣一種服務器端腳本語言,它最開始是由Rasums Lerdorf編寫的,只是一個簡單的用Perl語言編寫的CGI程序,用於記錄訪問他自己的網頁的訪問者。以後它又被用C語言重新寫過,范圍擴大到訪問數據庫。在這期間,有許多人向Rasums Lerdorf要此程序的拷貝,以便自己使用,Rasums Lerdorf為此寫了一些介紹此程序的文檔,並發布了PHP v1.0。以後,越來越多的人使用PHP,並強烈要求增加一些其他的特性,如循環語句和數組變量等,這時其他的一些程序員也開始參與PHP源碼的編寫,對PHP進行了重新編寫,PHP v3.0就出現了。當前,使用PHP的網站已經超過80萬,並且還在不斷地增加。
除了向浏覽器發送動態網頁之外,PHP還能發送不同HTTP頭標識,使其能提供網頁重定位、與Web服務器的安全認證結合的能力、以及設置Cookie。PHP能提供與多種數據庫直接互聯的能力,包括MySQL、Sybase、Informix、Oracle、MsSQL等,也能支持ODBC。並通過額外的庫能夠支持會話管理和XML處理(這些庫都是基本的庫,因此也是PHP用戶的基本配置)。從這裡我們可以看出,PHP已經不再是簡單的服務器端腳本了,按照《PHP3浏覽器應用編程》的作者David Medinets的話,PHP是一種應用服務器。因為它不僅僅包括一個完整的編程語言,而且還包括完整的訪問數據庫的能力、支持Internet協議(如電子郵件和HTTP)的能力,這一整套技術使得PHP能與ASP、ColdFusion、WebSphere互較短長。
要運行PHP,通常使用Linux或FreeBSD作為操作系統,使用Apache作為Web服務器。當然使用其他操作系統也同樣可行,這是因為PHP是一種跨平台的軟件,這當然得益於它是開放源代碼的軟件。但是,如果不使用Apache服務器,那麼PHP就只能以CGI的方式運行,這樣就不能利用將PHP編譯進Apache帶來的性能優勢。當從www.php3.net中下載了最新版本的PHP並安裝配置完畢之後,就可以使用編輯器或網頁制作軟件來編寫PHP代碼了。如果你能使用C或Perl進行編程,就會發現PHP編程並不復雜,作為程序語言的PHP比C簡單,比Perl易懂。下面是一個最簡單的嵌入PHP程序的頁面。
本新聞共2頁,當前在第1頁 1 2
〈HTML〉