PHP高级Web开发框架 Swoole

openkk 12年前

框架不是为了提升网站的性能,是为了提升网站的开发效率。最少的性能损耗,换取最大的开发效率。利用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服务器。
 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 秒。

新功能

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的扩展模块。

项目主页:http://www.open-open.com/lib/view/home/1329231143718