Swoole 扩展安装与使用入门
安装启用
可以直接使用宝塔安装Swoole扩展
或者 线上安装 linux为例:执行
pecl install swoole
,然后通过php -i | grep php.ini
定位 php.ini 文件所在位置,并打开该配置文件,在文件末尾追加如下内容:
[swoole]
extension=swoole.so
保存并退出,在终端运行 php -m
,如果看到扩展里包含 swoole,说明安装启用成功。
测试 Swoole 创建一个php文件 http_server.php
<?php
// 表明服务器启动后监听本地 9051 端口
$server = new swoole_http_server('127.0.0.1', 9501);
// 服务器启动时返回响应
$server->on("start", function ($server) {
echo "Swoole http server is started at http://127.0.0.1:9501\n";
});
// 向服务器发送请求时返回响应
// 可以获取请求参数,也可以设置响应头和响应内容
$server->on("request", function ($request, $response) {
$response->header("Content-Type", "text/plain");
$response->end("Hello World\n");
});
// 启动 HTTP 服务器
$server->start();
终端启用这个 php http_server.php
如图:
表示服务器已经启动并且在监听请求了,到浏览器中访问 http://127.0.0.1:9501,即可获取服务器输出响应内容:Hello Word
TCP 服务器和客户端 通过 Swoole 及其协程特性实现一个简单的 TCP 服务器和客户端,TCP 协议需要双方通过三次握手建立连接后才能进行通信,所以是一种可靠的协议,常见的聊天室应用就是基于 TCP 协议传输内容。我们还是在前面的测试目录下创建一个 tcp_server.php 文件用于编写 TCP 服务端代码:
<?php
namespace Swoole;
// 监听本地 9503 端口,等待客户端请求
$server = new Server("127.0.0.1", 9503);
// 建立连接时输出
$server->on('connect', function ($serv, $fd){
echo "Client:Connect.\n";
});
// 接收消息时返回内容
$server->on('receive', function ($serv, $fd, $from_id, $data) {
$serv->send($fd, 'Swoole: '.$data);
$serv->close($fd);
});
// 连接关闭时输出
$server->on('close', function ($serv, $fd) {
echo "Client: Close.\n";
});
// 启动 TCP 服务器
$server->start();
然后在该目录下创建一个 tcp_client.php 文件用于编写 TCP 客户端代码:
<?php
namespace Swoole;
// Swoole4以后通过协程来实现异步通信
go(function () {
$client = new Coroutine\Client(SWOOLE_SOCK_TCP);
// 尝试与指定 TCP 服务端建立连接(IP和端口号需要与服务端保持一致,超时时间为0.5秒)
if ($client->connect("127.0.0.1", 9503, 0.5)) {
// 建立连接后发送内容
$client->send("hello world\n");
// 打印接收到的消息
echo $client->recv();
// 关闭连接
$client->close();
} else {
echo "connect failed.";
}
});
这样,一个最基本的 TCP 服务端和客户端程序就编写完成了,在终端先启动 TCP 服务端:
php tcp_server.php
然后新开启一个终端窗口,启动 TCP 客户端:
php tcp_client.php
输出从 TCP 服务端接收到消息后 TCP 客户端退出,此时服务端也会打印连接建立和断开的日志消息:
客户端退出后,服务端依然处理监听状态,等待下一个请求。
猜你喜欢
黑客、后门
阅读 1572留下的网站后门,可以作什么?
抖音接入
阅读 2096PHP 接入抖音开放平台
微擎常用记录
阅读 752微擎常用记录
Laravel邮箱推送
阅读 1945Laravel发送邮件
LaravelS基于Swoole实现高性能 HTTP 服务器
阅读 1776LaravelS基于Swoole 配置nginx等
Laravel验证码
阅读 712Composer生成Laravel验证码
基于 Swoole 实现简单的 WebSocket 服务器及客户端
阅读 1319基于 Swoole 实现简单的 WebSocket 服务器及客户端
Laravel队列的实现
阅读 1336Laravel 队列的简单使用例子