PHP异步高并发扩展Swoole

php的优势不在说了。swole可能有些人还是是太熟悉,这也是php的一大革新。

下面来介绍一下。

GitHub地址:https://github.com/matyhtf/swoole

官网:http://www.swoole.com

pecl地址:http://pecl.php.net/package/swoole

swoole项目在春节前发布了1.6.10版本。

内核更新:

  • Enabled by defaultasync_mysql (5.4版本默认开启async_mysql特性)
  • UDP send no require from_id (udp 发送不包含 from_id)
  • Add last_time and connect_time to tcp connection_info (连结信息添加属性:连接时间和最后消息到达时间)
  • Add tcp heartbeat mechanism (内置tcp心跳检测模块)
  • rebuild data_buffer (重构了data_buffer)

client模块:

  • swoole_client on::Receive and on::Close no need to call recv/close (Receive和Close不需要相应的回调)

php方法变更:

  • add heartbeart()方法 (swoole_server_heartbeart() or $serv->heartbeat())(手动进行心跳检测)

配置变更:

  • add heartbeat_idle_time (心跳最大空闲时间)
  • add heartbeat_check_interval (心跳定时检测时间)

Swoole介绍:

Swoole是一个PHP的C扩展,可用来开发PHP的高性能高并发TCP/UDP Server。Swoole的网络IO部分基于多线程的epoll/kqueue事件循环,是全异步非阻塞的。 业务逻辑部分既可以像node.js一样全异步回调执行,也可以多进程同步阻塞方式来运行。这样既保证了Server能够应对高并发和大量TCP连接。又保证业务代码仍然可以简单的编写。

server 示例代码:

Php代码

<?php //server.php$serv = new swoole_server("0.0.0.0", 9501);$serv->set(array('worker_num' => 2,));$serv->on('connect', function ($serv, $fd){echo "Client:Connect.n";});$serv->on('receive', function ($serv, $fd, $from_id, $data) {$serv->send($fd, 'Swoole: '.$data);$serv->close($fd);});$serv->on('close', function ($serv, $fd) {echo "Client: Close.n";});$serv->start();?>php server.php         //运行telnet 127.0.0.1 9501  //连接serverhello  (发送)Swoole: hello (接收)

自己多多测试一下吧。很有用的。

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2015-10-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jaycekon

Spring-boot:5分钟整合Dubbo构建分布式服务

概述:   Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服...

5139
来自专栏Hadoop实操

Cloudera Manager Server服务在RedHat7状态显示异常分析

在RedHat7.x上启动了Cloudera Manager Server服务,Web界面访问正常,集群各个服务均正常,集群状态正常如下图所示:

3686
来自专栏携程技术中心

干货 | 深度剖析服务发现组件Netflix Eureka

作者简介 宋顺,携程框架研发部技术专家。2016年初加入携程,主要负责中间件产品的相关研发工作。毕业于复旦大学软件工程系,曾就职于大众点评,担任后台系统技术负责...

3495
来自专栏Java 源码分析

SpringCloud:Eureka服务注册与发现

Eureka 其实就是一个 服务注册与发现的中心,也就是相当于我们前面做的一些生产者的服务需要注册到我们的注册中心,那么我们的消费者就不用把代码写死,而是可以去...

1003
来自专栏Titan框架

使用Titan Framework搭建一个集群Demo

Titan Framework是一款分布式微服务框架,因其具有简单的配置方式,良好的集成性、多样化的支持、丰富的自定义扩展功能,所以它是非常值得我们去应用的。也...

770
来自专栏情情说

《深入实践Spring Boot》阅读笔记之三:核心技术源代码分析

上篇文章总结了《深入实践Spring Boot》的第二部分,本篇文章总结第三部分,也是最后一部分。这部分主要讲解核心技术的源代码分析,因为篇幅和能力原因,分析的...

4758
来自专栏吴柯的运维笔记

Linux下监控软件Zabbix安装部署教学

“每个理性的IT人士都置顶了吴柯的运维笔记” 1.部署LNMP环境 安装php Zabbix 3.0对PHP的要求最低为5.4,而CentOS6默认为5.3.3...

37013
来自专栏张善友的专栏

使用 WMI 进行诊断WCF

WMI 是基于 Web 的企业管理 (WBEM) 标准的 Microsoft 实现,WCF 公开服务的属性,如地址、绑定、行为和侦听器。您可以在应用程序的配置文...

1718
来自专栏cmazxiaoma的架构师之路

蛋疼的ElasticSearch(一)之安装ElasticSearch

1644
来自专栏Python爬虫与算法进阶

Spark教程(二)Spark连接MongoDB

数据可能有各种格式,虽然常见的是HDFS,但是因为在Python爬虫中数据库用的比较多的是MongoDB,所以这里会重点说说如何用spark导入MongoDB中...

1262

扫码关注云+社区