发布于 2016-11-22 04:29:08 | 216 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Swoole扩展官方文档,程序狗速度看过来!

Swoole Framework PHP Web开发框架

Swoole是一个php扩展也是一种PHP高级Web开发框架,框架不是为了提升网站的性能,是为了提升网站的开发效率。最少的性能损耗,换取最大的开发效率。利用Swoole框架,开发一个复杂的Web功能,可以在很短的时间内完成!


Swoole 1.9 正式版发布了。

PHP的异步、并行、高性能网络通信引擎Swoole 已发布 1.9 正式版。新版本增加了多项新特性,修复了多个已知问题。1.9版本是100%向下兼容1.8的,用户可无缝升级。

新增 RedisServer 框架

Swoole-1.9增加了一个兼容Redis服务器端协议的Server框架,可基于此框架实现Redis服务器,支持自定义指令。

示例:

use SwooleRedisServer;  $server = new Server('127.0.0.1', 9501);  $server->setHandler('Set', function($fd, $data) {     $server->array($data[0], $data[1]);     return Server::format(Server::INT, 1); });  $server->start();

客户端增加 pipe 函数

Swoole-1.9为异步TCP客户端增加了一个pipe方法,可以将客户端收到的数据重定向到另外一个文件描述符,可以是服务器的连接fd、stream资源、sockets资源、其他SwooleClient、SwooleProcess的管道。

示例:

use SwooleClient;  $client = new Client(SWOOLE_TCP | SWOOLE_ASYNC);  $client->on("error", function() {     echo "connect failedn"; });  $client->on("close", function() {     echo "connect closedn"; });  $client->on("connect", function($cli) {     //将数据重定向到标准输出,服务器向客户端发送的所有数据会打印到屏幕     $cli->pipe(STDOUT); });  $client->connect("127.0.0.1", 9501);

新增缓存区事件

1.9增加了2个新的事件回调onBufferFull和onBufferEmpty,以及2个新的配置项buffer_high_watermark和buffer_low_watermark。

如果写入的数据过多缓存区尺寸超过buffer_high_watermark就触发onBufferFull事件,当缓存区数据发送完成,水位低于buffer_low_watermark的值,会触发onBufferEmpty事件。

缓存区事件同时可用于Server和Client。

示例:

$client = new SwooleClient(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); //设置事件回调函数 $client->on("connect", function($cli) {     $cli->send("hello worldn"); }); $client->on("receive", function($cli, $data) {     echo "Received: ".$data."n"; }); $client->on("error", function($cli) {     echo "Connect failedn"; }); $client->on("close", function($cli) {     echo "Connection closen"; }); $client->on("bufferFull", function($cli) {    //暂停数据接收     $cli->pause(); }); $client->on("bufferEmpty", function($cli) {     //恢复数据接收     $cli->resume(); }); //发起网络连接 $client->connect('127.0.0.1', 9501, 0.5);

新增 Channel 模块

swoole-1.9新增了一个新的内存数据结构Channel,类似于Go的chan,底层基于共享内存+Mutex互斥锁实现,可实现用户态的高性能内存队列。

  • Channel可用于多进程环境下,底层在读取写入时会自动加锁,应用层不需要担心数据同步问题

  • 必须在父进程内创建才可以在子进程内使用

示例:

$chan = new SwooleChannel(2 * 1024 * 1024); //2M $chan->push(1234); $chan->push("hello world"); $chan->push(array(1234, 4567)); while($r = $chan->pop()) {     var_dump($r); }

新增 mmap 模块

swoole-1.9增加了一个新的模块,提供了对操作系统mmap的封装。使用mmap 可以很方便地将一个磁盘文件映射为内存,读写性能更高。

mmap可以减少读写磁盘操作的IO消耗、减少内存拷贝。在实现高性能的磁盘操作程序中,可以使用mmap来提升性能。

示例:

$file = __DIR__.'/data'; $size = 8192; $fp = swoolemmap::open($file, 8192);  fwrite($fp, "hello worldn"); fwrite($fp, "hello swoolen");  fflush($fp); fclose($fp);

其他新增特性

  • 增加swoole_clear_dns_cache函数,可清除底层的DNS缓存

问题修复

  • 修复Redis客户端type方法无法返回字符串的问题

  • 修复HttpClient无法重用的问题

  • 修复同步客户端长度协议package_max_length无效的问题

  • 修复低版本gcc下长期运行偶然发生崩溃的问题

  • 修复异步WebSocket客户端websocket_mask无效的问题

  • 修复MySQL客户端在记录条数过多时偶然崩溃的问题

  • 修复Mac平台下task超过8K时创建临时文件失败的导致无法投递任务的问题

  • 修复taskWaitMulti在进程返回超过8K时接收超时的问题

  • 修复atmoic的add和sub返回值存在的数据同步问题

下载地址:



历史版本 :
Swoole 1.10.0 发布,增加多项新特性
Swoole 1.9.22 发布,增加 Async::exec 功能
SwooleDistributed 框架 2.5 发布,全面支持 Docker
Swoole 1.9.19 发布,BUG 修复版本
Swoole 1.9.17 发布,增加静态文件处理器
Swoole 1.9.15 发布,增加静态编译支持
Swoole 1.9.11 发布,心跳检测支持时间轮算法
Swoole 1.9.9 发布,BUG 修复版本
Swoole 1.9.7 发布,增加 Http2.0 异步客户端
Swoole 1.9.6 发布,增加高性能序列化模块
Swoole 2.0 正式版发布,协程特性支持 PHP 7
Swoole 1.9.1 发布,Bug 修复版本
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务