linux-centos7服务器环境下,配置swoole的异步扩展ext-async-4.4.12

swoole版本v4.4.12,所以下载ext-async-4.4.12,git地址:https://github.com/swoole/ext-async,自行选择对应的版本
下载后上传到服务器,
zip的解压命令是:unzip file

[root@localhost file]# cd ext-async-master 
[root@localhost ext-async-master]# phpize 
[root@localhost ext-async-master]# find / -name php-config 
/www/server/php/72/src/scripts/php-config /www/server/php/73/bin/php-config 
[root@localhost ext-async-master]# ./configure --with-php-config=/www/server/php/73/bin/php-config 
[root@localhost ext-async-master]# make -j 4 
[root@localhost ext-async-master]# sudo make install 
Installing shared extensions: /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/ 
[root@localhost ext-async-master]# find / -name php.ini /www/server/php/72/etc/php.ini 
[root@localhost ext-async-master]# vi /www/server/php/72/etc/php.ini //添加 extension=swoole_async.so 
[root@localhost ext-async-master]# /etc/rc.d/init.d/php-fpm-72 restart 
[root@localhost ext-async-master]# php -m | grep swoole swoole_async

安装成功后有两个demo可以学习:

创建swoole的服务端文件server.php

<?php
// 1. 创建swoole 默认创建的是一个同步的阻塞tcp服务
$host = "192.168.126.129"; // 0.0.0.0 代表接听所有
#$host = "127.0.0.1"; // 0.0.0.0 代表接听所有
// 创建Server对象,监听 127.0.0.1:9501端口 // 默认是tcp
$serv = new Swoole\Server($host, 9501);
// 2. 注册事件
$serv->on('Start', function($serv){ echo "启动swoole 监听的信息tcp:$host:9501\n"; });
//监听连接进入事件
$serv->on('Connect', function ($serv, $fd) { echo "Client: Connect.\n"; });

//监听数据接收事件
$serv->on('Receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, "Server: ".$data); });
//监听连接关闭事件
$serv->on('Close', function ($serv, $fd) { echo "Client: Close.\n"; });
// 3. 启动服务器
// 阻塞
$serv->start(); // 阻塞与非阻塞
?>

创建swoole客户端swoole_tcp_client.php

<?php

$client = new swoole_client(SWOOLE_SOCK_TCP);
// 连接到服务器
if(!$client->connect('192.168.126.129',9501,0.5))
{
    die("connect failed.");
}

// 向服务器发送数据
if(!$client->send("hello world"))
{
    die("send failed.");
}
// 从服务器接受数据
$data = $client->recv();
if(!$data)
{
    die("recv failed.");
}
echo $data."接收到了\n";
// 关闭连接
$client->close();
echo "这是同步客户端.\n";

创建swoole异步客户端文件swoole_async_tcp_client.php

<?php
// 异步客户端
use Swoole\Async\Client;
$client = new Client(SWOOLE_SOCK_TCP);

$client->on("connect",function(Client $cli){
    //$cli->send("GET /HTTP/1.1 \r\n\r\n");
    $cli->send("l am laohe \r\n\r\n");
});

$client->on("receive", function(Client $cli,$data){
    echo "Receive:$data";
    sleep(1);
    $cli->send("1\n");
});
$client->on("error",function(Client $cli){
    echo "error\n";
});
$client->on("close",function(Client $cli){
    echo "close \n";
});

$client->connect('192.168.126.129',9501);

echo "这是异步客户端\n";

/*
 * 订单事务 需要时间  可以先给发送给swoole服务端 不等待 直接返回生成成功,等swoole服务端返回结果后在返回正确的。???
 *
 * */
posted @ 2020-10-29 16:44  蝶墨轩冕  阅读(620)  评论(0编辑  收藏  举报