当前位置: 代码迷 >> 应用服务器 >> 用PHP回实现PHP的应用服务器
  详细解决方案

用PHP回实现PHP的应用服务器

热度:4744   发布时间:2013-02-26 00:00:00.0
用PHP来实现PHP的应用服务器

PHPJava比最大的优势是什么?

简单高效,PHP在请求完成之后会释放所有资源和内存,无须担心内存泄漏。代码的质量无论高低一样运行的很流畅。

但同时这也是PHP致命的缺点。一旦请求数量上升,并发很高的时候,快速创建资源,又马上释放,使得PHP程序运行效率急剧下降。另外一旦项目的功能的越来越复杂,代码增多后,对于PHP也会是灾难。这也是PHP的框架为什么没有被PHP程序员广泛接受,而Java不存在这个问题。再好的框架也会被这种低效的方式拖累,导致系统变慢。

所以想到了使用PHP来开发PHP的应用服务器,让PHP的代码加载到内存后,拥有更长的生命周期,这样建立的数据库连接和其他大的对象,不被释放。每次请求只需要处理很少的代码,而这些代码只在第一次运行时,被PHP解析器编译,驻留内存。以后都是直接载入OPCODE,让Zend引擎直接运行。另外,之前PHP不能实现的,数据库连接池,缓存连接池都可以实现。系统的运行效率会大大提高。

经过一段时间研究,目前已经初步得到实现。使用PHP本身编写出HTTP服务器,以独立服务器方式运行,单个程序页面(有对象生成,数据库连接、smarty模板操作)的执行时间由原来的0.0x秒,下降到0.00x秒。使用Apache AB并发100测试。比传统LAMP方式,Request per Second高出至少10倍。在我的测试机上(Ubuntu10.04 Inter Core E5300 +2G内存)Apache只跑到 83RPSSwooleServer可以跑到1150RPS

http://www.iteye.com/news/21255-swoole-php-framework

1 楼 achun 2011-05-13  
这样想过,没敢做,佩服你
2 楼 matyhtf 2011-05-14  
achun 写道
这样想过,没敢做,佩服你

感谢你的支持!
目前已经初步实现了原型,在测试环境下,运行稳定。
已经解决了内存泄露的问题,基本上实现了PHP的所有功能,GET,POST请求,form-data文件上传,COOKIE和SESSION。
理论上是行得通的,我会持续做下去。
3 楼 输入法 2011-05-14  
支持!
4 楼 liguangyi 2011-11-04  
长时间运行的PHP程序,其内存管理是个大问题,占用的内存不会自己释放。请问楼主如何解决的?