阅读更多

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项目来巩固一下,...

  • node-v5.2.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • node-v4.4.0-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • node-v5.9.1-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • node-v4.8.3-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • paython作业,字典类型

    paython作业,字典类型

  • 西北工业大学-金工实习答案.pdf

    西北工业大学-金工实习答案.pdf

  • 一个自学VR开发用的demo repo.zip

    VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。

Global site tag (gtag.js) - Google Analytics