PHP的异步并行扩展Swoole发布1.7版本 - 开源中国社区
PHP的异步并行扩展Swoole发布1.7版本
matyhtf 2014年04月17日

PHP的异步并行扩展Swoole发布1.7版本

matyhtf matyhtf 发布于2014年04月17日 收藏 79 评论 39

【腾讯云】如何快速搭建微信小程序?>>>  

Swoole 1.7.0 发布了,该版本主要改进内容包括:

  • reactor线程与writer线程合并

  • 对send优化,加入out_buffer机制

  • 增加AIO异步读写文件的API

  • 增加DNS异步查询函数

  • swoole_client在php-fpm或apache mod_php下支持长连接

  • 增加非Server模式下的异步定时器支持

  • 定时器优化

  • 增加sendfile支持

  • onReceive的data变量使用引用方式,减少一次内存复制

  • 消息队列模式增加定时器的支持

  • 增加signalfd的支持,使信号事件也加入到Reactor

Swoole介绍

Swoole是一个PHP的异步并行扩展。基于Swoole,PHP就可以开发类似Node.js、Golang,基于全异步事件驱动的高性能网络程序。

Swoole提供了全套的异步API,包括异步MySQL查询、毫秒定时器、异步文件读写、DNS查询、异步TCP/UDP客户端等。

与Node.js不同,Swoole具有多线程Reactor和多进程Worker可以很好的利用多核。所以在多核的机器上,IO处理能是Node.js的数倍。另外Swoole的工作进程中事件回调可以是异步方式,也可以同步。

Swoole中使用了很多Linux内核新特性来增强系统功能和性能,如sendfile、eventfd、timerfd、signalfd等。

Swoole中使用了很多CPU原子性来实现多线程无锁编程,实现了高效的并行化运行。在swoole中工作进程可以很轻松地遍历/发送数据到所有TCP连接,而且无需担心数据同步和加锁。

Swoole示例

$serv = new swoole_server("127.0.0.1", 9501);
$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();
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
$client->on("connect", function($cli) {
    $cli->send("hello world\n");
});
$client->on("receive", function($cli, $data = ""){
    echo "Receive: ".$data.PHP_EOL;
});
$client->on("error", function($cli){
    echo "connect fail\n";
});
$client->on("close", function($cli){
    echo "connection close\n";
});
$client->connect('127.0.0.1', 9501, 0.5);




Swoole项目地址

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

网站首页:http://www.swoole.com/

Pecl首页:http://pecl.php.net/package/swoole

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:PHP的异步并行扩展Swoole发布1.7版本
分享
评论(39)
最新评论
0
别逗了。。看到PHP和node.js的战争 尿了。。。
长连接的项目 实时性非常强。。你见过不用C++写的游戏吗?基本上长连接的项目实时都很强,,这可不是WEB
比如游戏服务器 1秒20帧。 每帧要处理单场景1000玩家的逻辑。寻路 战斗。等等
什么IO不IO的 别测试了。。。无聊。只占项目代码的%5.。。 剩下的代码PHP跑的动吗
语言级就比C++慢50多倍。。 比V8慢25-30倍。。一个解释性的语言。却要写长连接的项目
2个都是坑。。。别比了。。。
http://benchmarksgame.alioth.debian.org/u32/compare.php?lang=php&lang2=v8
http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=php&lang2=gpp
0
@sinopf 其实我是一个Linux爱好者和PHP开发者。
0

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

引用来自“铂金眼”的评论

这个不是了吧!好的软件都是有Linux版,没windows版的。

引用来自“摔死的鸟”的评论

服务器用PHP 跑在win上,多么搞笑的事情。跑win 我倒不如跑微软的.net..当然,世界是就有这么搞笑的人。

引用来自“轻舞飞沙”的评论

可大部分人写php都是在windows上面进行。不要以为使用linux是多少高级的,对于我来说,都是在装B。

引用来自“eechen”的评论

Google、Amazon、Facebook、Taobao、Baidu都在装B,因为它们都用Linux,特别是Google,内部还用Goobuntu,还弄出了Linux内核的Android,让全世界都装B。

呵呵,自己不想学习,还说别人是装B,这太可笑了。另外,NASA(美国宇航局)也很装B哦,火星车不用四楼说的高级windows,竟然用低级的Linux!
0
要说局限应该去讨伐windows,谁让它不支持epool
0
请问这个怎么测试
0

引用来自“黑红薯”的评论

不支持windows环境,这是最大的局限

也许你想表达的是,不支持win,如果在win下开发的时候就不方便了。但是你这个说法后面就有很多争议了
0

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

引用来自“matyhtf”的评论

服务器端程序,果断放弃Windows是明智的选择。

+1024*1024
0

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

引用来自“采女孩的小蘑菇”的评论

井底之蛙

引用来自“辉常零距离”的评论

好,我承认我是井底之蛙。你敢承认吗?

引用来自“采女孩的小蘑菇”的评论

不好意思,我不用wins,办公archlinux,自用osx,服务器centos

哦,那我希望你永远不要用win系统了。我是不挑食的,什么系统都要用的,生产环境也是用centos,如果以后有更好的系统还会换为其它的。至于编程和其它一些折腾都还是在win,当然也不保证以后会换个其它系统折腾。

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

引用来自“采女孩的小蘑菇”的评论

井底之蛙

引用来自“辉常零距离”的评论

好,我承认我是井底之蛙。你敢承认吗?

不好意思,我不用wins,办公archlinux,自用osx,服务器centos

0

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

引用来自“采女孩的小蘑菇”的评论

井底之蛙

好,我承认我是井底之蛙。你敢承认吗?

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

井底之蛙

0

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

引用来自“铂金眼”的评论

这个不是了吧!好的软件都是有Linux版,没windows版的。

引用来自“摔死的鸟”的评论

服务器用PHP 跑在win上,多么搞笑的事情。跑win 我倒不如跑微软的.net..当然,世界是就有这么搞笑的人。

引用来自“轻舞飞沙”的评论

可大部分人写php都是在windows上面进行。不要以为使用linux是多少高级的,对于我来说,都是在装B。

引用来自“eechen”的评论

Google、Amazon、Facebook、Taobao、Baidu都在装B,因为它们都用Linux,特别是Google,内部还用Goobuntu,还弄出了Linux内核的Android,让全世界都装B。

引用来自“理工小强”的评论

恩 没办法 总有人鄙视linux 世界大 什么人都有的 正常

引用来自“辉常零距离”的评论

都开始钻牛角尖了,那位兄弟说的应该是我们应该用包容的视角去看待这个世界上一切存在的事物,而不应该抱住一样就排斥其它所有吧。
而且我也没有说swoole不好,正是因为我觉得它很好很强大,自己也想使用,奈何身边都是用windows办公,根本就用不了吗,所以对其有了更多的期许,希望它可以向PHP这棵大树一样可以夸平台,那样就完美了。

新增一个平台的支持需要付出更多的精力,像Nginx早期是不支持Windows的,章亦春基于Nginx开发的支持Lua编程的OpenResty同样不支持Windows,Memcached和Redis官方也是不支持Windows的,Facebook的HHVM也不支持Windows,PHP-FPM同样不支持Windows,还有像PHP的shmop、sysvmsg、sysvsem、sysvshm等同样不支持Windows。如果没有pthread-w32项目,pthreads这个PECL扩展也是不支持Windows的。PHP也不是绝对的跨平台的。

0

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

引用来自“铂金眼”的评论

这个不是了吧!好的软件都是有Linux版,没windows版的。

引用来自“摔死的鸟”的评论

服务器用PHP 跑在win上,多么搞笑的事情。跑win 我倒不如跑微软的.net..当然,世界是就有这么搞笑的人。

按照你的逻辑,PHP竟然支持windows岂不是更搞笑?

0

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

引用来自“蝙蝠”的评论

这个可不是局限。

你还有更好的词?我洗耳恭听。

0

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

引用来自“铂金眼”的评论

这个不是了吧!好的软件都是有Linux版,没windows版的。

引用来自“摔死的鸟”的评论

服务器用PHP 跑在win上,多么搞笑的事情。跑win 我倒不如跑微软的.net..当然,世界是就有这么搞笑的人。

引用来自“轻舞飞沙”的评论

可大部分人写php都是在windows上面进行。不要以为使用linux是多少高级的,对于我来说,都是在装B。

引用来自“eechen”的评论

Google、Amazon、Facebook、Taobao、Baidu都在装B,因为它们都用Linux,特别是Google,内部还用Goobuntu,还弄出了Linux内核的Android,让全世界都装B。

引用来自“理工小强”的评论

恩 没办法 总有人鄙视linux 世界大 什么人都有的 正常

都开始钻牛角尖了,那位兄弟说的应该是我们应该用包容的视角去看待这个世界上一切存在的事物,而不应该抱住一样就排斥其它所有吧。
而且我也没有说swoole不好,正是因为我觉得它很好很强大,自己也想使用,奈何身边都是用windows办公,根本就用不了吗,所以对其有了更多的期许,希望它可以向PHP这棵大树一样可以夸平台,那样就完美了。

0

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

引用来自“铂金眼”的评论

这个不是了吧!好的软件都是有Linux版,没windows版的。

引用来自“摔死的鸟”的评论

服务器用PHP 跑在win上,多么搞笑的事情。跑win 我倒不如跑微软的.net..当然,世界是就有这么搞笑的人。

引用来自“轻舞飞沙”的评论

可大部分人写php都是在windows上面进行。不要以为使用linux是多少高级的,对于我来说,都是在装B。

我想着不是装B不装B的问题,Linux完全可以控制在自己手里,像那些大公司用的Linux,我想他们用的都是自己内部定制的,可以根据业务需求改,win你可以?大部分人写php都在win不否认,最终运行,估计大部分是在Linux吧?

0

故事的情节也是丝丝入扣,引人入胜。比如,段誉为什么不顾自己亲身母亲的危险去救海尔兄弟?天线宝宝到底有没有对希曼实施报复计划?小泉老婆的肚子到底是不是李云龙搞大的?这些问题都紧紧的锁住了观众的眼球。另外,不得不提的是剧中的大反派黑猫警长,导演从黑猫警长的成长历程来分析他心态扭曲的原因,这个就非常好。不同以往电视剧总是强调反派如何如何坏,而忽略了人性方面的东西。大家想一想,如果不是王家芝对黑猫警长长期的虐待,他会变成一个杀人魔王吗?

0

如果有局域网的linux开发机的话,可以挂载win下面的盘符进行开发,挺方便的!

0

天峰V5

0

引用来自“辉常零距离”的评论

不支持windows环境,这是最大的局限

这个可不是局限。

顶部