MENU

神器Swoole

January 19, 2014 • 扯淡

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

相信这一段引自Swoole官网的文字解答了大家的第一个问题:Swoole是什么。那么现在我要说说,我是怎么找到它的。前一段时间,有写一个简单的IM(Instant Message)的想法。因为初接触C#的缘故,客户端肯定是用.Net写了,服务端呢?考虑到服务端肯定是跑在Linux上的,C#马上被否决(不能编译成二进制可执行文件,麻烦)。有考虑过C,但是C的特性还是少了点,写起来可能比较耗时。C++呢?确实有找到一个C++的Socket库,但是…毕竟Linus是说过某些话的,而且自己也没碰过C++,上手很有难度。忽然想到了PHP。PHP是C写的,也有Socket相关的特性,但是查了一些资料之后,还是觉得有些麻烦。然而此时Swoole出现了。简单看了一下简介之后,决定就是它了。当时心情比较激动,PHP写业务逻辑,底层实现还不用管,没有比这更爽的事情了。

客户端部分连抄带猜地花了一两个小时出了原型。服务端部分呢,官网复制的示例代码基本上没怎么改就跑起来了,前后不过五分钟。当然客户端服务端开发速度不是可以比较的,想说明的只是,Swoole确实很好用。

顺带着,我看了看作者韩天峰的博客。PHP的MySQL连接池、守护进程化、PHP+Socket实现HTTP服务器……眼花缭乱中。这些概念真正是非常新颖的,不能说每个都是那么成熟那么有实用价值,但是它们多多少少是有被应用到的机会的。今天看到了MySQL连接池相关的内容,真的是忍不住想自己试一试了。

Swoole能做什么?这个问题很好说,凡是关于TCP/UDP的编写,都可以用到就是了。它不仅可以作为服务器运行,也可以作为客户端连接其他服务器哦。不管怎么说,Swoole这个东西以后肯定会是经常要用到了。

Tags: php, c/cpp
Archives Tip
QR Code for this page
Tipping QR Code