为了学 Swoole,我们在开始之前已经普及了很多的知识,这篇我们就要上手玩一把 Swoole,是不是感觉有点手痒了。。
前边几篇分别记录了:
都是一些简单的网路基础知识,不过这些最好要牢记。
然后就是 Swoole 扩展的安装:
Swoole server
创建
server 的创建其实非常简单,只需要我们在安装好扩展的基础上,实现以下代码就可以了。
swoole_server 类的构造函数一共有四个参数,上面我们填写了两个 ,还有两个有默认值,不填也可。
swoole_server构造函数
- @param $host // 监听的 IP
- @param $port // 监听的端口
- @param int $mode // 运行模式,swoole提供了3种运行模式,默认为SWOOLE_PROCESS多进程模式
- @param int $sock_type // Socket的类型,支持TCP、UDP、TCP6、UDP6、UnixSocket Stream/Dgram 6种,默认为SWOOLE_SOCK_TCP TCP 类型
设置
swoole_server->set()
函数用于设置swoole_server运行时的各项参数。服务器启动后通过$serv->setting来访问set函数设置的参数数组。
具体有哪些设置,我们后边慢慢学习,现在我们先实现一个简单的例子。
worker_num 设置启动的worker进程数量。swoole采用固定worker进程的模式。
PHP代码中是全异步非阻塞,worker_num配置为CPU核数的1-4倍即可。如果是同步阻塞,worker_num配置为100或者更高,具体要看每次请求处理的耗时和操作系统负载状况。
事件回调函数
swoole_server->on()
注册Server的事件回调函数。
- 第1个参数是回调的名称, 大小写不敏感,具体内容参考回调函数列表,事件名称字符串不要加on
- 第2个函数是回调的PHP函数,可以是函数名的字符串,类静态方法,对象方法数组,匿名函数
有新的客户端连接时,worker进程内会触发该回调
server接收到客户端的数据后,worker进程内触发该回调
客户端断开连接或者server主动关闭连接时 worker进程内调用
启动server
|
|
Swoole Client
创建
client 的创建一样非常简单
swoole_client 类的构造函数一共有三个参数。
swoole_client构造函数
- @param int $sock_type 指定socket的类型,支持TCP/UDP、TCP6/UDP6 4种
- @param int $sync_type SWOOLE_SOCK_SYNC/SWOOLE_SOCK_ASYNC 同步/异步
- @param string $connectionKey 链接的编号,用于长连接复用
建立连接
|
|
发送数据
|
|
从服务端接收数据
|
|
输出接受到的数据
|
|
关闭连接
|
|
Server 和 Client 通讯
终端执行命令,将 server 挂起
打开新的终端执行 client 程序,在此之前你可以使用一下命令查看 server 监听的9501端口的监听情况
从上边可以看到一些状态tcp4、LISTEN等关键信息
执行 client 代码程序:
运行 server的终端会显示如下:
到这个地方我们已经简单的实现了 Swoole Server 和 Client 的链接通讯。