PHPlet是什么?<br />
很简单,它是一个使用PHP编写的Web服务器,可以替代我们常用的Apache或IIS。<br />
为什么要介绍PHPlet?<br />
因为它是PHPer们学习Web服务器原理的捷径。<br />
因为它的程序结构很好,类似Java的面向对象编程,有很好的参考价值。<br />
因为我认为PHP5和PHPlet相继发布稳定版本后,PHP5+PHPlet+SQLite(PPS)将是小型应用、程序演示的另外一种选择。<br />
现在大部分的小型应用或者程序演示都是把Apache+PHP+MySQL(APM结构)做成exe或rpm安装包,它的容量在8M-45M左右。如果使用了PPS结构整个系统将会缩减到2-3M之内(SQLite是嵌入式数据库),而且省去了对Apache和MySQL的依赖。 <br />
PHPlet的运行方式?<br />
PHPlet使用php_socktes.dll实现端口侦听。 <br />
PHPlet是常驻内存的,可以使用srvany.exe将它作为NT的服务运行。 <br />
PHPlet的多进程功能只能运行在Linux、FreeBSD、*unx系统等系统下,这是因为PHP的“进程控制函数库”不支持Win32平台。<br />
<br />
好了,废话不多说,马上进入我们的PHPlet之旅。<br />
<br />
<br />
<br />
一.资源下载:<br />
l PHP<br />
ZIP-Format: http://cn.php.net/download/<br />
TGZ-Format: http://cn.php.net/download/<br />
要下载最新的稳定版本,这样会得到更好的性能和稳定性。我用的是PHP4.3.6,写这篇文档时PHP5还在测试阶段。<br />
要下载ZIP包而不是安装包,因为安装版(其实是简化版)中没有我们需要的DLL动态链接库。<br />
<br />
l PHPlet<br />
ZIP-Format: http://phplet.sourceforge.net/<br />
TGZ-Format: http://phplet.sourceforge.net/<br />
要下载最新的稳定版本,这样会得到更好的性能和稳定性。我用的是PHPlet0.0.7,写这篇文档时还没有稳定版本。<br />
<br />
二.安装:<br />
l PHP<br />
<br />
解压缩到D:PHP4:<br />
如果你是初学者最好释放到我说的目录,否则后面会带来一些麻烦。<br />
创建cli_php.exe:<br />
将D:PHP4cliphp.exe复制到D:PHP4cli_php.exe。<br />
它是PHPlet的启动程序,复制到D:PHP4是为了能跟php.exe共享php.ini。<br />
PEAR的安装:<br />
PHPlet扩展了Pear的类库,那么我们先来安装Pear。<br />
前提是你的电脑处于连线状态,因为安装程序需要下载一部分组件(还没研究如何不下载)。<br />
另外你的身份必须是Administrator,因为安装程序中会在Windows目录下创建pear.ini。<br />
一切准备就绪后运行D:PHP4go-pear.bat开始安装。<br />
<br />
第一步. 直接按回车(也可以CTRL+C退出:D):<br />
Welcome to go-pear!<br />
<br />
Go-pear will install the 'pear' command and all the files needed by<br />
it. This command is your tool for PEAR installation and maintenance.<br />
<br />
Go-pear also lets you download and install the PEAR packages bundled<br />
with PHP: DB, Net_Socket, Net_SMTP, Mail, XML_Parser, PHPUnit-0.6.2.<br />
<br />
If you wish to abort, press Control-C now, or press Enter to continue: <br />
<br />
<br />
第二步. 输入Pear下载地址:<br />
用来指定Pear组件的下载地址和端口,可以直接按回车。<br />
HTTP proxy (http://user:password@proxy.myhost.com:port), or Enter for none:: <br />
<br />
<br />
第三步. PHP路径设置:<br />
一共7项,输入相应的序号就可以修改,输入"all"是修改全部,一般情况下只需要修改第7项。<br />
选择第7项后会弹出一个windows的选择目录对话框,选择D:PHP4。<br />
Below is a suggested file layout for your new PEAR installation. To<br />
change individual locations, type the number in front of the<br />
directory. Type 'all' to change all of them or simply press Enter to<br />
accept these locations.<br />
<br />
1. Installation prefix : D:PHP4<br />
2. Binaries directory : $prefix<br />
3. PHP code directory ($php_dir) : $prefixpear<br />
4. Documentation base directory : $php_dirdocs<br />
5. Data base directory : $php_dirdata<br />
6. Tests base directory : $php_dir ests<br />
7. php.exe path :<br />
<br />
1-7, 'all' or Enter to continue: <br />
<br />
<br />
4.确认:<br />
确认一些组件是否安装,这里要输入"Y",因为PHPlet正用到他们。<br />
The following PEAR packages are bundled with PHP: DB, Net_Socket, Net_SMTP,<br />
Mail, XML_Parser, PHPUnit-0.6.2.<br />
Would you like to install these as well? [Y/n] : <br />
<br />
<br />
5.安装或下载组件:<br />
接下来请稍等几分钟,安装程序会自动下载组件并安装。<br />
如果"PHPUnit-0.6.2"下载出错将会报错,这时就要检查一下你的网络连接了。(只要网络正常一般不会有问题,你可以访问http://pear.php.net试试)<br />
Loading zlib: ok<br />
Using local package: PEAR………….ok<br />
Using local package: Archive_Tar……ok<br />
Using local package: Console_Getopt….ok<br />
Using local package: XML_RPC……….ok<br />
Bootstrapping: PEAR……………….(local) ok<br />
Bootstrapping: Archive_Tar…………(local) ok<br />
Bootstrapping: Console_Getopt………(local) ok<br />
Using local package: DB……………ok<br />
Using local package: Net_Socket…….ok<br />
Using local package: Net_SMTP………ok<br />
Using local package: Mail………….ok<br />
Using local package: XML_Parser…….ok<br />
Downloading package: PHPUnit-0.6.2…. <br />
<br />
好了,到这里Pear已经安装完毕。<br />
修改php.ini:<br />
将D:PHP4php.ini-dist改名为php.ini,然后打开。<br />
<br />
找到:<br />
; Windows: "path1;path2"<br />
;include_path = ".;c:phpincludes"<br />
改为:<br />
; Windows: "path1;path2"<br />
include_path = ".;D:PHP4includes;D:PHP4PEAR"<br />
<br />
找到:extension_dir = "./" 改为:extension_dir = "D:PHP4extensions"<br />
<br />
找到:;extension=php_sockets.dll 改为:extension=php_sockets.dll<br />
<br />
<br />
l PHPlet<br />
<br />
解压缩到D:PHP4PHPlet:<br />
如果你是初学者最好释放到我说的目录,否则后面会带来一些麻烦。<br />
更改配置文件:<br />
打开D:PHP4PHPletconfigphplet.conf<br />
<br />
"WEB_ROOT" 修改为:"D:PHP4PHPletwww"<br />
"HTTP_HOSTNAME" 修改为:"localhost"<br />
"HTTP_HOSTPORT" 修改为:"8080"<br />
"HTTP_SERVER_MODE" 修改为:"sequential"<br />
"HTTP_SERVER_DEBUG" 修改为:"false"<br />
"PHP_EXECUTABLE" 修改为:"D:PHP4php.exe"<br />
"CLASSLOADER_SINTAX_CHECK" 修改为:"false"<br />
更改启动文件:<br />
打开D:PHP4PHPletinphpletstart.bat<br />
<br />
link:http://www.knowsky.com<br />
<br />
"PHP_EXE" 修改为:D:PHP4cli_php.exe<br />
三.开始!启动服务器!<br />
进入到D:PHP4PHPletin,双击phpletstart.bat启动服务。<br />
好了,打开浏览器输入http://localhost:8080/phplet/HelloWorld看一下效果吧。<br />
四.性能测试<br />
发现只要运行一次,无论对HelloWorld.php做任何修改(甚至删除),也不会改变第二次刷新的结果(跟Java Servlet很像吧?),除非重新启动服务器。所以我感觉它的性能一定很棒,不出所料,请看我的测试结果:<br />
服务器A(PHP4+PHPlet),特别选了台很烂的 AMD K6-2 400 + 128M。<br />
客户机B(Windows2003+IE6),P42.6G + 500M<br />
客户机B输入网址 http://192.168.0.15:8080/PHPler/HelloWord.php 然后按住F5持续1分钟,服务器A占用CPU一直持续在60%。如果是Apache2+PHP4(CGI模式)以这样的频率刷新将会持续100%,时间长后有可能会沾光虚拟内存!<br />
<br />
当然了,上面只是片面的测试,做为WEB服务更主要的还是稳定,因为时间关系也没功夫更详细的测试。大家可以作更多测试后再一起讨论。<br />
五.注意事项<br />
1. 上面说过PHPlet编程有点类似Java Servlet,只要运行一次无论对.php作任何更改(甚至删除),也不会改变第二次刷新的结果。<br />
2. PHPlet的HTTP_HOSTNAME(主机名)最好设置成你的IP而不是localhost,否则其它主机无法通过你的IP访问。<br />
3. 程序中不要使用exit,要使用return退出,否则将会关闭PHPlet服务器。<br />
4. 应该用$response->write()方法输入字符串,因为print或echo会将字符串输出到终端上。<br />
5. PHPlet不支持虚拟目录和虚拟主机功能。<br />
六.结束语<br />
写这篇文章之前并没有接触过Pear、PHPlet和Socktes函数库,所以有些术语可能说得不够准确,欢迎指正!<br />
对PHPlet和其他Web服务器熟悉的朋友希望能相互交流,如果你有任何问题也可以写信给我。<br />
<br />
为中国的PHP事业贡献自己微薄的力量 —- 毛松