phplet是什嗎?
很簡單,它是一個使用PHP編寫的Web伺服器,可以替代我們常用的Apache或IIS。
為什麼要介紹PHPlet?
因為它是PHPer們學習Web伺服器原理的捷徑。
因為它的程式結構很好,類似java的物件導向編程,有很好的參考價值。
因為我認為PHP5和PHPlet相繼發布穩定版本後,PHP5+PHPlet+SQLite(PPS)將是小型應用、程式示範的另外一種選擇。
現在大部分的小型應用或者程式示範都是把Apache+PHP+MySQL(APM結構)做成exe或rpm安裝包,它的容量在8M-45M左右。如果使用了PPS結構整個系統將會縮減到2-3M之內(SQLite是嵌入式資料庫),而且省去了對Apache和MySQL的依賴。
PHPlet的運行方式?
PHPlet使用php_socktes.dll實現連接埠偵聽。
PHPlet是常駐記憶體的,可以使用srvany.exe將它作為NT的服務運行。
PHPlet的多進程功能只能運行在linux、FreeBSD、*unx系統等系統下,這是因為PHP的“進程式控制制函數庫”不支援Win32平台。
好了,廢話不多說,馬上進入我們的PHPlet之旅。
一.資源下載:
l PHP
Zip-Format: http://cn.php.net/download/
TGZ-Format: http://cn.php.net/download/
要下載最新的穩定版本,這樣會得到更好的效能和穩定性。我用的是PHP4.3.6,寫這篇文檔時PHP5還在測試階段。
要下載ZIP包而不是安裝包,因為安裝版(其實是簡化版)中沒有我們需要的DLL動態連結程式庫。
l PHPlet
ZIP-Format: http://phplet.sourceforge.net/
TGZ-Format: http://phplet.sourceforge.net/
要下載最新的穩定版本,這樣會得到更好的效能和穩定性。我用的是PHPlet0.0.7,寫這篇文檔時還沒有穩定版本。
二.安裝:
l PHP
解壓縮到D:\PHP4:
如果你是初學者最好釋放到我說的目錄,否則後面會帶來一些麻煩。
建立cli_php.exe:
將D:\PHP4\cli\php.exe複製到D:\PHP4\cli_php.exe。
它是PHPlet的啟動程式,複製到D:\PHP4是為了能跟php.exe共用php.ini。
PEAR的安裝:
PHPlet擴充了Pear的類庫,那麼我們先來安裝Pear。
前提是你的電腦處於連線狀態,因為安裝程式需要下載一部分組件(還沒研究如何不下載)。
另外你的身份必須是Administrator,因為安裝程式中會在Windows目錄下建立pear.ini。
一切準備就緒後運行D:\PHP4\go-pear.bat開始安裝。
第一步. 直接按斷行符號(也可以CTRL+C退出:D):
Welcome to go-pear!
Go-pear will install the 'pear' command and all the files needed by
it. This command is your tool for PEAR installation and maintenance.
Go-pear also lets you download and install the PEAR packages bundled
with PHP: DB, Net_Socket, Net_SMTP, Mail, xml_Parser, PHPUnit-0.6.2.
If you wish to abort, PRess Control-C now, or press Enter to continue:
第二步. 輸入Pear下載地址:
用來指定Pear組件的下載地址和連接埠,可以直接按斷行符號。
HTTP proxy (http://user:passWord@proxy.myhost.com:port), or Enter for none::
第三步. PHP路徑設定:
一共7項,輸入相應的序號就可以修改,輸入"all"是修改全部,一般情況下只需要修改第7項。
選擇第7項後會彈出一個windows的選擇目錄對話方塊,選擇D:\PHP4。
Below is a suggested file layout for your new PEAR installation. To
change individual locations, type the number in front of the
directory. Type 'all' to change all of them or simply press Enter to
accept these locations.
1. Installation prefix : D:\PHP4
2. Binaries directory : $prefix
3. PHP code directory ($php_dir) : $prefix\pear
4. Documentation base directory : $php_dir\docs
5. Data base directory : $php_dir\data
6. Tests base directory : $php_dir\tests
7. php.exe path :
1-7, 'all' or Enter to continue:
4.確認:
確認一些組件是否安裝,這裡要輸入"Y",因為PHPlet正用到他們。
The following PEAR packages are bundled with PHP: DB, Net_Socket, Net_SMTP,
Mail, XML_Parser, PHPUnit-0.6.2.
Would you like to install these as well? [Y/n] :
5.安裝或下載組件:
接下來請稍等幾分鐘,安裝程式會自動下載組件並安裝。
如果"PHPUnit-0.6.2"下載出錯將會報錯,這時就要檢查一下你的網路連接了。(只要網路正常一般不會有問題,你可以訪問http://pear.php.net試試)
Loading zlib: ok
Using local package: PEAR.............ok
Using local package: Archive_Tar......ok
Using local package: Console_Getopt....ok
Using local package: XML_RPC..........ok
Bootstrapping: PEAR...................(local) ok
Bootstrapping: Archive_Tar............(local) ok
Bootstrapping: Console_Getopt.........(local) ok
Using local package: DB...............ok
Using local package: Net_Socket.......ok
Using local package: Net_SMTP.........ok
Using local package: Mail.............ok
Using local package: XML_Parser.......ok
Downloading package: PHPUnit-0.6.2....
好了,到這裡Pear已經安裝完畢。
修改php.ini:
將D:\PHP4\php.ini-dist改名為php.ini,然後開啟。
找到:
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"
改為:
; Windows: "\path1;\path2"
include_path = ".;D:\PHP4\includes;D:\PHP4\PEAR"
找到:extension_dir = "./" 改為:extension_dir = "D:\PHP4\extensions\"
找到:;extension=php_sockets.dll 改為:extension=php_sockets.dll
l PHPlet
解壓縮到D:\PHP4\PHPlet:
如果你是初學者最好釋放到我說的目錄,否則後面會帶來一些麻煩。
更改設定檔:
開啟D:\PHP4\PHPlet\config\phplet.conf
"WEB_ROOT" 修改為:"D:\\PHP4\\PHPlet\\www"
"HTTP_HOSTNAME" 修改為:"localhost"
"HTTP_HOSTPORT" 修改為:"8080"
"HTTP_SERVER_MODE" 修改為:"sequential"
"HTTP_SERVER_DEBUG" 修改為:"false"
"PHP_EXECUTABLE" 修改為:"D:\\PHP4\\php.exe"
"CLASSLOADER_SINTAX_CHECK" 修改為:"false"
更改開機檔案:
開啟D:\PHP4\PHPlet\bin\phpletstart.bat
link:http://www.cncms.com
"PHP_EXE" 修改為:D:\PHP4\cli_php.exe
三.開始!啟動伺服器!
進入到D:\PHP4\PHPlet\bin,雙擊phpletstart.bat啟動服務。
好了,開啟瀏覽器輸入http://localhost:8080/phplet/HelloWorld看一下效果吧。
四.效能測試
發現只要運行一次,無論對HelloWorld.php做任何修改(甚至刪除),也不會改變第二次重新整理的結果(跟Java Servlet很像吧?),除非重新啟動伺服器。所以我感覺它的效能一定很棒,不出所料,請看我的測試結果:
伺服器A(PHP4+PHPlet),特別選了台很爛的 AMD K6-2 400 + 128M。
客戶機B(Windows2003+IE6),P42.6G + 500M
客戶機B輸入網址 http://192.168.0.15:8080/PHPler/HelloWord.php 然後按住F5持續1分鐘,伺服器A佔用CPU一直持續在60%。如果是Apache2+PHP4(CGI模式)以這樣的頻率重新整理將會持續100%,時間長後有可能會沾光虛擬記憶體!
當然了,上面只是片面的測試,做為WEB服務更主要的還是穩定,因為時間關係也沒功夫更詳細的測試。大家可以作更多測試後再一起討論。
五.注意事項
1. 上面說過PHPlet編程有點類似Java Servlet,只要運行一次無論對.php作任何更改(甚至刪除),也不會改變第二次重新整理的結果。
2. PHPlet的HTTP_HOSTNAME(主機名稱)最好設定成你的IP而不是localhost,否則其它主機無法通過你的IP訪問。
3. 程式中不要使用exit,要使用return退出,否則將會關閉PHPlet伺服器。
4. 應該用$response->write()方法輸入字串,因為print或echo會將字串輸出到終端上。
5. PHPlet不支援虛擬目錄和虛擬機器主機功能。
六.結束語
寫這篇文章之前並沒有接觸過Pear、PHPlet和Socktes函數庫,所以有些術語可能說得不夠準確,歡迎指正!
對PHPlet和其他Web伺服器熟悉的朋友希望能相互交流,如果你有任何問題也可以寫信給我。
為中國的PHP事業貢獻自己微薄的力量 ---- 毛松