swoole

Swoole概述Swoole是一个用于生产环境的PHP异步网络通信引擎。纯C语言编写(Swoole 4开始用C++编写),提供PHP语言异步多线程服务器、异步TCP/UDP网络客户端、异步MySQL、异步Redis、数据库连接池、AsyncTask、消息队列、毫秒定时器、异步文件读写、异步DNS查询。除了对异步IO的支持,Swoole还为PHP多进程模式设计了多种并发数据结构和IPC通信机制,可以大大简化多进程并发编程的工作。它包括并发原子计数器、并发哈希表、通道、锁、IPC等丰富的功能特性。

PHP之前被诟病的一个原因是,它是一种同步阻塞语言,这是在Web应用的IO密集型领域编写高并发、高性能应用的一大障碍。借助Swoole,PHP开发者可以轻松编写高性能的异步并发TCP、UDP、Unix Socket、HTTP和WebSocket服务,使得PHP语言在异步IO和网络通信领域得到拓展,有望在工业技术上与Node.js和Go语言一争高下。某种程度上,Swoole给了PHP异步的翅膀,让它飞得更高。

此外,如果想更好地掌握Swoole的底层原理,需要具备以下知识储备:

多进程/多线程

了解 Linux 操作系统进程和线程的概念了解 Linux 进程/线程切换调度的基本知识了解进程间通信的基本知识,如管道、UnixSocket、消息队列、共享内存

(电源)插座

了解 SOCKET 的基本操作如 accept/connect、send/recv、close、listen、bind了解 SOCKET 的接收缓存区、发送缓存区、阻塞/非阻塞、超时等概念

IO多路复用

了解 select/poll/epoll了解基于 select/epoll 实现的事件循环,Reactor 模型了解可读事件、可写事件

传输控制协议/互联网协议

了解 TCP/IP 协议了解 TCP、UDP 传输协议

调试工具

使用 gdb 调试 Linux 程序使用 strace 跟踪进程的系统调用使用 tcpdump 跟踪网络通信过程其他 Linux 系统工具,如 ps、lsof、top、vmstat、netstat、sar、ss 等

注意:可以在网上搜索相应的资源了解这部分内容,也可以通过程序员内功训练系列进行系统学习。

安装启用

Swoole是PHP的扩展,可以通过PHP扩展来安装和启用。

本地安装

拉拉多克

对于本地安装,以laradock为例,需要在。Laradock目录中的env:

然后运行Docker-Compose构建PHP-FPM工作区来重新构建Docker容器。构造完成后,重启两个容器,进入Workspace容器,运行php -m看看swoole是否安装成功。如果扩展列表包含Swoole,则表示安装成功。

Windows/Mac

如果它安装在本地Windows/Mac系统上,直接执行以下命令来安装接口:

前提是pecl命令在系统路径中可用。然后运行php -m,看到扩展列表包含swoole,表示安装成功。

在线安装

如果安装在服务器上,以Ubuntu系统为例,通过执行以下命令进行安装:

然后通过php -i | grep php.ini定位php.ini文件的位置,打开配置文件,在文件末尾添加以下内容:

保存并退出,在终端运行php -m。如果您看到扩展包含swoole,则安装成功。

注意:以上服务器安装方法也适用于Homestead和其他Ubuntu系统。

测试 Swoole

我们基于Swoole写两个简单的函数来测试Swoole是否能正常工作。

HTTP服务器

首先,我们通过Swoole编写一个简单的HTTP服务器,并在测试目录中创建一个http_server.php文件。编写该文件的代码如下:

这样就完成了一个基本的HTTP服务器,除了提供最简单的服务器监控和响应功能之外,其工作原理与工业Apache和Nginx服务器类似。我们在终端启用该服务器:

swoole

这样,就意味着服务器已经启动并正在监听请求。在浏览器中访问http://127.0.0.1:9501以获得服务器输出响应:

TCP服务器和客户端

接下来,我们通过Swoole及其协作特性实现了一个简单的TCP服务器和客户端。TCP协议是一种可靠的协议,因为双方需要通过三次握手来建立连接。常见的聊天室应用程序是基于TCP协议传输内容。让我们在前面的测试目录中创建一个tcp_server.php文件来编写tcp服务器代码:

然后在这个目录中创建一个tcp_client.php文件来编写tcp客户端代码:

这样就编写了一个基本的TCP服务器和客户端程序,在终端启动TCP服务器:

然后打开一个新的终端窗口并启动TCP客户端:

输出从TCP服务器收到的消息后,TCP客户端退出,此时服务器也会打印连接建立和断开的日志消息:

客户端退出后,服务器仍然处理监听状态,并等待下一个请求。

好了,这就是我今天要给大家介绍的Swoole安装及入门教程。感谢您的阅读!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论