PHP高性能 Server 框架&…

 

PHP的高性能Server框架Swoole已发布C扩展版本。

 

 

Swoole使用纯C编写,以PHP扩展的方式提供了一个强大的异步并行Server框架,特性如下:

 

  • 基于linux epoll+eventfd,不依赖libevent等第三方库,在Linux下可直接编译。
  • 支持3种模式Call、Writer和Worker。
  • 网络模块是完全异步非阻塞的,而且实现了读写分离,无锁设计。

运行模式

  • Call模式是在Reactor线程中直接回调,适用于IO很轻,逻辑简单的网络服务器
  • Writer模式是将数据投递给Writer线程,由Writer线程处理请求,Reactor线程继续处理新的网络请求。是call模式的加强版。这里使用了共享内存队列的设计,性能很好。
  • Worker模式是用类似Nginx的方式,采用了proxy+worker多进程的模式,将请求投递给Worker进程去处理,Worker进程处理完后再交由Writer线程写回客户端。这种方式比较适合业务比较重的场景。Swoole扩展提供了进程管理的功能,当worker进程异常结束时,父进程会fork出新的worker进程。

安装和编译

Swoole类似于node.js,但swoole内部是多线程的,只需要修改配置参数,即可调节线程、进程数量。Swoole使用简单方便,用户无须关心内部实现,只需要设置启动参数、编写PHP回调函数即可。

 

swoole扩展安装的方法和其他PHP扩展相同,使用phpize来进行编译配置。只需要phpize、./configure、make && make install 三步即可完成编译安装。可以使用dl动态加载,也可修改php.ini配置自动加载。

 

环境依赖

  • OS: Only Linux version 2.6.22 or higher
  • PHP: version 5.2 or higher
  • require pthread epoll and eventfd
  • gcc: version 4.0 or higher

代码实例

Php代码
  1. <?php  
  2. $serv swoole_server_create("127.0.0.1"9500, 1);  
  3. swoole_server_set($serv, array 
  4.     'timeout'=>2.5,  
  5.     'poll_thread_num'=>1,  
  6.     'writer_num'=>2,  
  7.     'worker_num'=>2,  
  8.     'backlog'=>128,  
  9.     'max_request' => 1000,  
  10. ));  
  11. function my_onStart($serv)  
  12.  
  13.     echo "Server:start\n" 
  14.  
  15.   
  16. function my_onShutdown($serv)  
  17.  
  18.     echo "Server:onShutdown(\n" 
  19.  
  20.   
  21. function my_onClose($serv,$fd,$from_id)  
  22.  
  23.   echo "Client:Close. fd=$fd|from_id=$from_id\n" 
  24.  
  25.   
  26. function my_onConnect($serv,$fd,$from_id)  
  27.  
  28.     echo "Client:Connect. fd=$fd|from_id=$from_id\n" 
  29.  
  30.   
  31. function my_onReceive($serv,$fd,$from_id,$data)  
  32.  
  33.     echo "Client:Data. fd=$fd|from_id=$from_id|data=$data\n" 
  34.     swoole_server_send($serv, $fd, "Server:$data");  
  35.  
  36.   
  37. swoole_server_handler($serv, 'onStart''my_onStart');  
  38. swoole_server_handler($serv, 'onConnect''my_onConnect');  
  39. swoole_server_handler($serv, 'onReceive''my_onReceive');  
  40. swoole_server_handler($serv, 'onClose''my_onClose');  
  41. swoole_server_handler($serv, 'onShutdown''my_onShutdown');  
  42.   
  43. swoole_server_start($serv);  
  44. ?>  

 

Shell代码 
  1. php server.php  
  2. telnet 127.0.0.1 9500  
  3. hello  
  4. server: hello  

 

项目地址

https://github.com/matyhtf/php_swoole

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值