swoole安装及测试示例

swoole安装

方案一:MAC本地安装

官方安装命令:pecl install swoole
在这里插入图片描述
下载PECL:
在这里插入图片描述
安装PECL:
在这里插入图片描述
在这里插入图片描述
安装swoole:
问题1: /tmp/pear/install wu无权限
解决: sudo chmod 0777 /tmp/pear/install在这里插入图片描述
问题2: channel “pecl.php.net” has updated its protocols
问题3: File http://pecl.php.net:80/channel.xml not valid
问题4: ssl://pecl.php.net:443 failed
解决:搜索说是证书问题,但尝试了网上各种方案,最终仍未解决!!!例如:https://www.jianshu.com/p/059c88417ca8
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方案二:开发机安装

步骤如下:
1、pecl install swoole
2、进入目录
3、phpize
4、./configure(报错及解决方案如下图)
5、make
6、sudo make install
8、php -i | grep php.ini (查找php.ini配置路径)
9、sudo vi /usr/local/matrix/lib/php.ini
(在文件最后加上extension=swoole.so)
10、php -m (即可看到扩展模块swoole)
11、重启服务

 error: C++ preprocessor "/lib/cpp" fails sanity check 
 问题的根源是缺少必要的C++库。如果是CentOS系统,运行,如下命令解决:
yum install glibc-headers
yum install gcc-c++ 

在这里插入图片描述
在这里插入图片描述

测试示例

HTTP 服务

示例代码

首先我们通过 Swoole 编写一个简单的 HTTP 服务器,在测试目录下创建一个 http_server.php 文件,编写文件代码如下:
本地配置host:10.26.27.95 swoole.com

<?php

// 表明服务器启动后监听本地 9051 端口
$server = new swoole_http_server('swoole.com', 9501);

// 服务器启动时返回响应
$server->on("start", function ($server) {
    echo "Swoole http server is started at http://swoole.com:9501\n";
});

// 向服务器发送请求时返回响应
// 可以获取请求参数,也可以设置响应头和响应内容
$server->on("request", function ($request, $response) {
    $response->header("Content-Type", "text/plain");
    $response->end("Hello World\n");
});

// 启动 HTTP 服务器
$server->start();

启动服务

在这里插入图片描述

浏览器中输入:swoole.com:9501

在这里插入图片描述

TCP服务

示例代码

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客户端:

<?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 客户端:
在这里插入图片描述

UDP服务

示例代码

<?php
// 创建UDP Server对象
$serv = new swoole_server('127.0.0.1', 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);

// 监听数据接收事件
$serv->on('Packet', function ($serv, $data, $clientInfo) {
    $serv->sendto($clientInfo['address'], $clientInfo['port'], 'Server ' . $data);
    var_dump($clientInfo);
});

// 启动服务器
$serv->start();

运行结果

在这里插入图片描述

参考文章

https://wiki.swoole.com/#/environment

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值