swoole 1.7.9 发布,支持 websocket 协议

matyhtf
 matyhtf
发布于 2015年01月12日
收藏 28

PHP的异步并行网络扩展swoole 1.7.9版本已发布,此版本现已提供下载:

主要更新:

  • 增加内置Websocket服务器协议的支持

  • 增加swoole_process::signal,支持子进程异步信号处理

  • 增加swoole_server::addProcess,支持添加额外的用户定义工作进程

  • 增加swoole_process::name,支持子进程重命名

  • 增加swoole_server->sendMessage和onPipeMessage事件

  • 增加swoole_event_write函数,用于将fwrite/socket_write等PHP自带的socket数据发送变为异步化

  • 增加swole_server的user/group/chroot配置,可修改工作进程的用户/组/根目录

  • swoole_server->task/finish可以发送任意PHP的变量

  • 修复目前已知的BUG

Websocket服务器:

$ws = new swoole_http_server("0.0.0.0", 9502);

$ws->on('message', function ($frame) {
    $frame->message("server send: ".$frame->data);
});

$ws->start();
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:swoole 1.7.9 发布,支持 websocket 协议
加载中

最新评论(22

官方入员
官方入员
证明php是最好语言,没有之一.不解释!
乳沟
乳沟
能运行在win上就好了
initphp
initphp
Swoole大法好.
吉姆测试机
吉姆测试机
swoole加油,看好你
eechen
eechen
Swoole的多线程和事件驱动不依赖于其他PECL扩展,是自己实现的.
而WorkerMan的多进程和事件驱动则依赖于pcntl和libevent等PECL扩展.

Swoole的进程模型:
http://rango.swoole.com/archives/305
Swoole包含Master和Manager这两个进程,其中Master进程包含多个Reactor线程,Manager进程则包含多个Worker子进程和Task进程.
Reactor线程(epoll)异步并行地处理网络请求,然后再转发给Worker进程中去处理.
Reactor和Worker间通过IPC(inter-process communication,进程间通信)方式通信.
Manager进程会监视所有子进程的退出事件,当Worker进程发生致命错误或者运行生命周期结束时,管理进程会回收此进程,并创建新的进程.
Manager进程还可以平滑地重启所有Worker进程,以实现程序代码的重新加载.
同步阻塞,支持定时器的Task进程是异步任务管理器,可以使你的程序中某些处理慢的函数异步去执行,比如广播和发送邮件等.
任务丢给Task进程后,Worker进程可以继续处理新的数据请求,Task进程完成任务后会异步地通知Worker进程告诉它此任务已经完成.
另外Task进程还可以用来实现PHP的数据库连接池,异步队列等.

Swoole HTTP WebSocket聊天室PHPWebIM:
https://github.com/matyhtf/PHPWebIM
PHPWebIM Demo:
http://webim.swoole.com/
编程案例:
http://git.oschina.net/matyhtf/swoole/blob/master/examples/server/http_server.php
http://git.oschina.net/matyhtf/swoole/blob/master/examples/server/websocket_server.php

峰哥也是蛮拼的,点个赞.
eechen
eechen
WorkerMan进程模型:
http://doc.workerman.net/process-model/master-worker.html
master进程里有多个worker进程,每个worker进程里用epoll(libevent)异步处理请求.

WorkerMan是一个高性能的PHP socket服务器框架,WorkerMan基于PHP多进程(pcntl)以及libevent(epoll)事件轮询库,
PHP开发者只要实现一两个接口,便可以开发出自己的网络应用,例如RPC服务、聊天室服务器、游戏服务器等。

WorkerMan的目标是让PHP开发者更容易的开发出基于socket的高性能的应用服务,而不用去了解PHP socket以及PHP多进程细节。
WorkerMan本身是一个PHP多进程服务器框架,具有PHP进程管理以及socket通信的模块,所以不依赖PHP-FPM、Nginx或者Apache等这些容器便可以独立运行。

WorkerMan HTTP WebSocket聊天室Demo:
http://chat.workerman.net/
http://kedou.workerman.net/
eechen
eechen

引用来自“yak”的评论

用这个是不是可以多线程写个php爬虫了?
写爬虫要用多线程的话,应该用PHP的pthreads扩展,Swoole的定位不是用来做爬虫的.
Swoole不单单可以做HTTP服务,比如基于WebSocket实现聊天室,还可以进行TCP/UDP编程,应用场景如移动通讯和手游等.
Swoole跟另一个开源项目WorkerMan是竞争对手.也就是说,WorkerMan和Swoole把PHP的战火从HTTP烧到了TCP/UDP领域.
Swoole和WorkerMan跟都是CLI命令行模式运行的程序,这点跟Apache/Nginx/PHP-FPM的传统运行模式显著不同.
桂荣
桂荣
支持一个
回去干活
回去干活
恩,不错,不过已转用go实现了tcp与websocket的类库.
go还是更加的方便.
立Q
立Q
我去,逆天了,以后直接用php做网络编程了,好方便
返回顶部
顶部