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 条评论
登录 后参与评论

相关文章

来自专栏IT笔记

本地私服仓库nexus3.3.1使用手册

私服架构 私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建。有了私服之后,当 Maven 需要下载构件时,直接请求私服...

5757
来自专栏北京马哥教育

十二条Linux运维面试必备经典笔试/面试题,来挑战一下!

又到了一年一度的秋招,作为运维方向,看了一些面经,收集了一些笔试面试题,总结了一下,贴出来仅供参考,有错误的地方还请指出. 1.Linux设置环境变量 暂时的:...

4279
来自专栏北京马哥教育

大型网站架构系列:消息队列(二)

本文是大型网站架构系列:消息队列(二),主要分享JMS消息服务,常用消息中间件(Active MQ,Rabbit MQ,Zero MQ,Kafka)。 【第二篇...

3025
来自专栏desperate633

TCP协议浅析TCP概述TCP可靠数据传输TCP流量控制TCP连接管理

上图我们进行一个分析,以便搞清楚tcp序列号和ack的应用 首先,hostA作为发送方给B发送数据,随机选择一个序列号seq = 42,也就是这段segmen...

732
来自专栏皮振伟的专栏

[linux][memory]进程的最大内存使用量的讨论

前言: 一个进程最大能使用多少虚拟内存,能控制的地方还是比想象的多一点。 尤其是IaaS上,一个qemu进程能使用多少虚拟内存,就是对应着虚拟机的物理内存的最大...

85611
来自专栏韩伟的专栏

状态模式:一个Epoll边缘触发的代理服务器设计

设计模式是一门热门的知识,但是何时应该用哪个,却往往不容易掌握,本文以一个Socks5代理服务器的设计为例,介绍状态模式的实践用法。 软件的功能介绍 提供Soc...

4047
来自专栏黑泽君的专栏

day07_Tomcat服务器与http学习笔记

    WEB,在英语中web即表示网页的意思,它用于表示Internet主机上(服务器)供外界访问的资源。

791
来自专栏CSDN技术头条

Kafka Consumer 开发的一些关键点

Kafka的consumer是以pull的形式获取消息数据的。不同于队列和发布-订阅模式,kafka采用了consumer group的模式。通常的,一般采用一...

1919
来自专栏匠心独运的博客

消息中间件—RocketMQ消息消费(三)(消息消费重试)

摘要:如果Consumer端消费消息失败,那么RocketMQ是如何对失败的异常情况进行处理? 前面两篇RocketMQ消息消费(一)/(二)篇,主要从Pus...

1863
来自专栏左瞅瞅,右瞅瞅

nmap详解

nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包,用来扫描网上电脑开放的网络连接端,确定哪些服务运行在哪些连接端。它是网...

1081

扫码关注云+社区