阅读更多

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

  • 阿里巴巴六个盒子实践.pptx

    阿里巴巴六个盒子实践.pptx

  • Vue JS 和 Firebase 数据库实现的在线购物车系统项目源码(可做毕设项目参考)

    项目简介: VueJS 和 Firebase 数据库中的在线购物车系统是一个基于Web的应用程序,旨在提供一个简单而高效的在线购物体验。该项目使用VueJS进行前端开发,并使用Firebase作为数据库来存储和管理购物车数据。通过这个项目,用户可以添加商品到购物车、查看购物车内容、进行结账等操作。 项目目标: 提供一个功能完备的在线购物车系统。 提供用户友好的操作界面。 提高用户的编程技能,特别是VueJS和Firebase的应用能力。 项目功能 添加商品到购物车: 用户可以浏览商品并将其添加到购物车中。 查看购物车内容: 用户可以查看购物车中的所有商品,包括商品名称、数量、价格等信息。 更新购物车: 用户可以更新购物车中的商品数量或删除商品。 结账: 用户可以进行结账操作,完成购买流程。 项目优势 高效的购物体验: 提供便捷的购物车功能,提高用户的购物体验。 用户友好: 界面简洁,操作简单,用户可以轻松使用该应用程序。 提高编程技能: 通过实践项目,提高对VueJS和Firebase的应用能力。 结论 VueJS 和 Firebase 数据库中的在线购物车系统是一个简单且实用的小项目

  • 一个基于PHP的开源轻简论坛

    一个基于PHP的开源轻简论坛 服务器环境要求: 支持子目录安装论坛 PHP 5.3+ 包括5.3 , 5.3以上环境 Apache || Nginx || IIS 需要开启伪静态,否则无法安装~! 数据库支持 : MYSQL , MSSQL ,Oracle ,SQLite ,PostgreSQL ,Sybase 等.. PHP支持扩展 需要开启 PDO ##### PDO PDO PDO 否则数据库玩不了 以文件缓存形式运行论坛, 支持自由的 **模板 **与 插件 开发 所以非常适合二次开发,论坛基于框架开发, 很多操作都是非常简单, 论坛也封装了 Model提供使用 所以二次开发并不需要修改论坛源代码, 只需要增加自己的插件 从中修改论坛 用户也可以通过模板机制自己内容来源于网络分享。仅供学习使用。请勿商用。如有侵权,请联系我。我将立即删除开发一套属于自己的模板, 模板拥有框架标签解析引擎, 是非常容易开发的 论坛可承载亿级数据库 运行 0.00x速度, 当然是用了xcache加速编译 , 论坛也在开发测试中. 论坛暂时没开发 数据缓存

  • pyzmq-15.2.0.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • 每日随机素材!!!!!!!!!!!

    每日随机素材

  • Swift语言相关项目的示例

    Swift语言相关项目的示例

  • 安卓提醒应用及其源代码+使用说明(毕设参考)

    安卓提醒应用及其源代码 概述 安卓提醒应用可以在你有会议或约会前发出提醒,类似于你通常看到的提醒通知。 该软件的作用仅仅是在你需要执行任务时提醒你。它甚至可以为手机通知设置日程。 任务可以按日、周或月来执行。 如果你有忘事的倾向,或者需要特定任务的提醒,不用担心;这款软件将为你处理一切。你可以创建一个基本的任务提醒应用来跟踪你所有的责任。它还会向你发送有关任务位置的通知。 安卓提醒应用的特点 注册新任务,并设置时间和日期来安排工作。 以列表形式显示所有任务。 通过通知来保持任务提醒。 安卓提醒应用的流程: 你应该设计一个带有提醒列表的主屏幕,以及一个录入用户提醒信息的屏幕。下面你可以找到应用流程的清晰解释: 使用RecyclerView或ListView显示提醒。 在主屏幕上嵌入一个浮动操作按钮。使用它,用户可以添加新任务。 将提醒添加到SQLite数据库。 使用Alarm Manager和Notification Manager设置闹钟。 使用Notification Manager和pending Intent显示通知。 更新Manifest文

Global site tag (gtag.js) - Google Analytics