Swoole(PHP高级Web开发框架)
框架不是为了提升网站的性能,是为了提升网站的开发效率。最少的性能损耗,换取最大的开发效率。利用Swoole框架,开发一个复杂的Web功能,可以在很短的时间内完成!
Swoole有独立特行的道!
Swoole不是一个向Zend Framework、CakePHP、Yii、symfony、ThinkPHP等框架,或者WordPress、Drupal 、Discuz、UChome等开源产品看齐的项目。 Swoole的目标是向Java框架、Rails On Ruby、Python Django Pylons等一流框架发起挑战。
新功能
Swoole可以独立运行了。swoole代码中已提供http server。按照Swoole MVC规范编写的程序都可以独立运行,无需前置Apache服务器。
<?php require('config.php'); define('SESSION_CACHE','file://localhost#sess'); require(LIBPATH.'/function/cli.php'); //Mime格式 require(LIBPATH.'/data/mimes.php'); $mime_types = array_flip($mimes); //静态文件许可 $static_files = array_flip(array('static','templates','swoole_plugin','favicon.ico','robot.txt')); $static_access = array_flip(array('html','htm','jpg','gif','png','js','css')); //加载全部controller import_all_controller(); $SERVER'run_mode' = 'server'; $SERVER'server_driver' = 'SelectTCP'; //BlockTCP,EventTCP,SelectTCP $SERVER'server_host' = '0.0.0.0'; $SERVER'server_port' = 8888; $SERVER'server_processor_num' = 4; //启用的进程数目 $SERVER'session_cookie_life' = 86400; //保存SESSION_ID的cookie存活时间 $SERVER'session_life' = 1800; $php->runServer();
PHP 的代码加载到内存后,拥有更长的生命周期,这样建立的数据库连接和其他大的对象,不被释放。每次请求只需要处理很少的代码,而这些代码只在第一次运行时,被 PHP 解析器编译,驻留内存。以后都是直接载入 OPCODE ,让 Zend 引擎直接运行。另外,之前 PHP 不能实现的,数据库连接池,缓存连接池都可以实现。系统的运行效率会大大提高。
Swoole使用 PHP 本身编写出 HTTP 服务器,以独立服务器方式运行,单个程序页面 ( 有对象生成,数据库连接、 smarty 模板操作 ) 的执行时间由原来的 0.0x 秒,下降到 0.00x 秒。使用 Apache AB 并发 100 测试。比传统 LAMP 方式, Request per Second 高出至少 10 倍。在我的测试机上 (Ubuntu10.04 Inter Core E5300 + 2G 内存 ) , Apache 只跑到 83RPS 。 Swoole Server 可以跑到 1150 多 RPS 。
新功能
Swoole增加中心日志控制模块。用法
$php->log->info('that is swoole!');
Swoole增加事件触发系统。用法
$php->event->raise('sendsms',$mobile,$sms_content);
这是一个很酷的设计,如果在本地测试环境中,你可是配置为同步,那么raise引发一个时间后,去执行事件对应的handle函数。如果是服务器环境,可以设置为异步,那么raise只会向Queue服务器投递一个事件。在后台启动一个守护进程,从Queue服务器取得事件,然后再用handle函数去处理。
压力测试
运行环境:Linux Windows Mac FreeBSD Unix
PHP版本支持:PHP5.2 PHP5.3 PHP6.0
PHP5.1需要添加Json支持,不支持PHP4.x版本
支持的数据库:MS SQL Server、MySQL、IBM DB2、Oracle、Interbase 、SQLite、PostgreSQL、ODBC
支持的运行方式:Web、Cli命令行脚本、PHP-GTK GUI
压力测试:ab -c 100 -n 1000 http://www.swoole.com/ (服务器环境为双核CPU+4G内存+320G SATA,已安装APC扩展)
Requests per second: 733.86 #/sec
Transfer rate: 7737.04 Kbytes/sec received
此处省略了一部分内容,有兴趣的朋友可以自己测试一下。我这里是在服务器上对实际的动态页面进行的测试.
最新版本:Swoole 0.98 beta 1 Released Featured
点击下载 次版本修正、改进了很多地方。新增了Swoole事件处理系统,Validate验证类,CacheQueue高速队列等,具体内容请浏览updates项目。增强了安全性和健壮性。并且解决了在生产环境遇到各类问题
官方网站已用swoole框架重写,在线文档和社区正在建立中,另外将收录几个比较成功的站点案例。另外基于libevent和pcntl的linux socket服务器类,已编码完成,目前正在实验测试中。将在下一个版本(预计2011年6月份)中包含。
Swoole提供PHP网络服务器类库
PHP不仅可以运行于Web,也可以作为守护进程或者是Windows服务运行。通过建立TCP、UDP Server,可以建立后端应用服务器,更好的将PHP程序分层。
前端Web层PHP处理,请求应答。后端守护进程运行的PHP程序,处理业务逻辑。另外,还可以将慢速操作,放到后端处理,比如发送远程请求,批量处理更新,前端发送UDP包到后端服务器,后端服务器进行处理,并处理结果。
Swoole网络服务器类库,首先在Linux/Unix下实现,依赖于libevent,epoll调用,实现高性能高并发服务器。
无论在Web上还是服务器程序,都可以使用Swoole类库提供的功能,只需要require ‘config.php’,就可以了。
Swoole开始提供Javascript库了
目前,提供2个包,UI类:包含Dialog、Button、日历输入框,表单验证类:根据属性,自动验证表单。
浏览swoole.js
包含以下几个特色功能:
1、 类似ORM的数据查询,提供SQL封装器,让MySQL的SQL与PHP的Array,会话,Cache无缝结合
2、App MVC分层结构,有效的程序结构分层,提高程序的可维护性和扩展性,实现低耦合,基于接口开发。
3、集成大量实用的功能,比如方便的数据库操作,模板操作,缓存操作,系统配置,表单处理,分页,数据调用,字典操作,上传处理,内容编辑,调试等
4、模板-数据反射系统,可以直接在模板中调用数据,提供很多标签,可是无需修改程序,只修改模板,即可实现网站各类更新维护工作。
Future
1、Swoole net 类的继续完善,解决异步IO,增加多线程Driver,完成其他协议
2、Swoole框架,部分使用C重写,作为PHP的扩展模块。
https://github.com/swoole/swoole-src/blob/master/examples/server.php
http://www.swoole.com/wiki/index/prid-1