阅读更多

2顶
0踩

编程语言

 

PHP的高性能异步网络通信框架Swoole已发布 1.8.0 版本,此版本是一个里程碑式新版本,新增了多项新特性、多项核心功能优化以及问题修复、移除了无效的特性。更新内容如下:

客户端

  • 增加原生异步MySQL客户端
  • 增加原生异步Redis客户端,基于Redis官方提供的hiredis库
  • 增加原生异步Http客户端
  • 增加原生异步WebSocket客户端支持
  • 重构底层swClient,异步TCP客户端实现放到swoole内核中
  • 增加swoole_client->reuse属性,SWOOLE_KEEP长连接模式下标识是否为复用的连接

服务器端

  • 重构websocket服务器代码,底层与length_check协议复用相同的处理函数,增强稳定性
  • 增加Task进程对tick/after定时器的支持,底层基于高精度的setitimer+信号实现
  • 保存构造函数中传入的host、port参数到swoole_server对象属性
  • 增加多端口多协议的支持(重要更新)
  • 增加swoole_server->defer函数用于延时执行一些函数
  • 增加swoole_server->close强制切断连接的选项,设置第二个参数会true会清空发送队列并立即切断连接

多端口多协议示例:

$serv = new swoole_server("0.0.0.0", 9501);

$port2 = $serv->listen('127.0.0.1', 9502, SWOOLE_SOCK_TCP);

$port2->set(array(
    'open_length_check' => true,
    'package_length_type' => 'N',
    'package_length_offset' => 0,       //第N个字节是包长度的值
    'package_body_offset' => 4,       //第几个字节开始计算长度
    'package_max_length' => 2000000,  //协议最大长度
));

$port2->on('receive',  function (swoole_server $serv, $fd, $from_id, $data)  {
    echo "ServerPort2\n";
});

$serv->on('connect', function ($serv, $fd, $from_id){
    echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Connect.\n";
});

$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) {
    echo "[#".$serv->worker_id."]\tClient[$fd]: $data\n";
    if ($serv->send($fd, "hello\n") == false)
    {
        echo "error\n";
    }
});

$serv->on('close', function ($serv, $fd, $from_id) {
    echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Close.\n";
});

$serv->start();

其他

  • 增加swoole_table对key值的存储,foreach遍历table时可以获取到key值
  • 更改swoole_table的key对比模式,从crc32比对改为直接进行字符串对比
  • 更新utlist.h库到1.9.9版本

swoole_table保存Key值会增加内存占用,如table的size为100万,KEY值存储会增加64M内存占用

问题修复

  • 修复启用消息队列后发生double-free问题
  • 重构定时器,修复aftertick定时器偶然出现的core dump的问题
  • 定时器使用最小堆数据结构,插入/删除时间复杂度为log(N)
  • 修复swoole_process::signal在PHP7下发生core dump的问题
  • 修复swoole_async_write在PHP7下发生core dump的问题

移除特性

  • 移除未支持的特性相关历史遗留代码,如heartbeat_pingdispatch_key_type
  • 移除swoole_server->addtimerswoole_server->deltimerswoole_server->gettimer
  • 移除swoole_timer_addswoole_timer_del
  • 移除swoole_serveronTimer事件
  • 移除task_worker_max配置及相关特性代码
  • 移除swoole_server->handler方法

 

 

2
0
评论 共 1 条 请登录后发表评论
1 楼 shuhen2011 2016-04-04 11:41
支持swoole

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • asp.net 树形目录

    asp.net 树形目录关键词: TreeView                                          TreeView使用集锦     选择自 hgknight 的 Blog  关键字   TreeView 出处      原来在论坛里发过专题帖子,只是由于帖子丢失原因,有些问题找不到了,同时这次也补充了一些,发到文档区以方便查询吧原贴

  • TreeView控件

    [转帖]关于TreeView控件专题 1.下载地址 http://msdn.microsoft.com/downloads/samples/internet/ASP_DOT_NET_ServerControls/WebControls/default.asp 安装后,通过“自定义工具箱”->“.net框架组件”把TreeView添加到工具箱里 2.运行时无法显示 一般是Tr

  • [原创]根据TreeView中节点的不同,来绑定不同的dropdownlist

    1.TreeView和DropDownList在一个页面  1<%@ Page Language="vb" AutoEventWireup="false" Codebehind="treeDrp.aspx.vb" Inherits="Ex.treeDrp"%> 2<%@ Register TagPrefix="iewc" Namespace="Micr

  • PHP开源项目大全

    WordPress是最热门的开源个人信息发布系统(Blog)之一,基于PHP+MySQL构建。WordPress提供的功能包括:1.文章发布、分类、归档。 2.提供文章、评论、分类等多种形式的RSS聚合。 3.提供链接的添加、归类功能。 ...

  • Php开源项目大全

    WordPress是最热门的开源个人信息发布系统(Blog)之一,基于...1.文章发布、分类、归档。 2.提供文章、评论、分类等多种形式的RSS聚合。 3.提供链接的添加、归类功能。 4.支持评论的管理,垃圾信息过滤功能。 5...

  • php 开源项目汇总

    文章发布、分类、归档。2.提供文章、评论、分类等多种形式的RSS聚合。3.提供链接的添加、归类功能。4.支持评论的管理,垃圾信息过滤功能。5.支持对样式CSS和PHP程序的直接编辑、修改。6.在Blog系统外,方便的添加所...

  • 比较好的PHP开源项目

    1.文章发布、分类、归档。  2.提供文章、评论、分类等多种形式的RSS聚合。  3.提供链接的添加、归类功能。  4.支持评论的管理,垃圾信息过滤功能。  5.支持对样式CSS和PHP程序的直接编辑、修改

  • PHP

    文章发布、分类、归档。2.提供文章、评论、分类等多种形式的RSS聚合。3.提供链接的添加、归类功能。4.支持评论的管理,垃圾信息过滤功能。5.支持对样式CSS和PHP程序的直接编辑、修改。6.在Blog系统外,方便的添加...

  • PHP开源大全

    1.文章发布、分类、归档。 2.提供文章、评论、分类等多种形式的RSS聚合。 3.提供链接的添加、归类功能。 4.支持评论的管理,垃圾信息过滤功能。 5.支持对样式CSS和PHP程序的直接编辑、修改

  • PHP 开源项目汇总

    WordPress 【PHP开源 博客Blog】WordPress是最...文章发布、分类、归档。 2.提供文章、评...   WordPress 【PHP开源 博客Blog】 WordPress是最热门的开源个人信息发布系统(Blog)之一,基于P

  • PHP开源技术大全(四)

    主要特性: 简单的一步式安装向导 文本、图片以及 swf 文件都存到 SQLite 数据库 两种不同的图片尺寸:原图和缩略图 只需要备份 SQlite 文件即可完成整个系统的备份 Many image filters (require

  • 两周面试突击

    不要被新技术迷惑,所谓万变不离其宗,新技术都是基于java的基础之上,如果基础不扎实,对于这些新技术的理解也是一知半解,学不到根源。 2、做一个java项目在学习完java的基础知识之后,做一个java项目来巩固一下,...

  • setting.xml文件,修改Maven仓库指向至阿里仓

    setting.xml文件,修改Maven仓库指向至阿里仓

  • 基于java的玉安农副产品销售系统的开题报告.docx

    基于java的玉安农副产品销售系统的开题报告

  • dev-c++ 6.3版本

    dev-c++ 6.3版本

  • 基于java的项目监管系统开题报告.docx

    基于java的项目监管系统开题报告

  • 基于springboot多彩吉安红色旅游网站源码数据库文档.zip

    基于springboot多彩吉安红色旅游网站源码数据库文档.zip

  • 毕业设计&课设_基于 AFLFast 改进能量分配策略的毕业设计项目,含 Mix Schedule策略设计及测试结果分析.zip

    毕业设计&课设_基于 AFLFast 改进能量分配策略的毕业设计项目,含 Mix Schedule策略设计及测试结果分析.zip

  • 基于springboot办公用品管理系统源码数据库文档.zip

    基于springboot办公用品管理系统源码数据库文档.zip

Global site tag (gtag.js) - Google Analytics