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

相关文章

来自专栏韩伟的专栏

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

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

4867
来自专栏龙首琴剑庐

基于复杂方案OWSAP CsrfGuard的CSRF安全解决方案(适配nginx + DWR)

1、什么是CSRF? 已经有很多博文讲解其过程和攻击手段,在此就不重复了。 O(∩_∩)O 不清楚的同学,请自行搜索或按链接去了解: http://blog...

5027
来自专栏CSDN技术头条

Kafka Consumer 开发的一些关键点

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

2409
来自专栏desperate633

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

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

1322
来自专栏PhpZendo

Jerry Qu 博客 Nginx 配置之性能篇

在介绍完我博客(imququ.com)的 Nginx 配置中与安全有关的一些配置后,这篇文章继续介绍与性能有关的一些配置。WEB 性能优化是一个系统工程,涵盖很...

1252
来自专栏IT笔记

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

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

1.3K7
来自专栏琯琯博客

优化 Laravel 网站打开速度

1.关闭debug 打开.env文件,把debug设置为false. APP_ENV=local APP_DEBUG=false APP_KEY=base64...

42711
来自专栏前端开发

前端安全问题之-CSRF攻击

2743
来自专栏皮振伟的专栏

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

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

2.3K11
来自专栏左瞅瞅,右瞅瞅

nmap详解

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

3111

扫码关注云+社区

领取腾讯云代金券