SWOOLE---TCP学习

//创建Server对象,监听 127.0.0.1:9501端口
$serv = new Swoole\Server("127.0.0.1", 9501);
$serv->set([
    'worker_num' => 8,//worker进程数 cpu 1-4倍
    'max_request' => 10000,
    'daemonize' => 0
]);
/*监听连接进入事件
 * $fd 客户端连接的唯一表示
 * $reactor_id 线程id
 * */
//监听连接进入事件
$serv->on('Connect', function ($serv, $fd,$reactor_id) {
    echo "Client:{$fd} - {$reactor_id} Connect.\n";
});
//监听数据接收事件
$serv->on('Receive', function ($serv, $fd, $reactor_id, $data) {
    $serv->send($fd, "Server: {$fd} - {$reactor_id} ".$data);
});
//监听连接关闭事件
$serv->on('Close', function ($serv, $fd) {
    echo "Client: Close.\n";
});
//启动服务器
$serv->start();

执行

php tcp.php

成功监听

telnet 127.0.0.1 9501

成功和服务端连接,关掉时出现了问题
再开启文件时 提示端口已经被占用

 sudo netstat -an |grep 9501
tcp4       0      0  127.0.0.1.9501         *.*                    LISTEN  

可以查看端口仍然再继续监听 但是查看不到进程id无法关闭
mac上面的netstat命令不好用

lsof -i tcp:9501 
COMMAND  PID         USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
php     1178 xxx    3u  IPv4 0x8b622f8efeee58e3      0t0  TCP localhost:9501 (LISTEN)
kill -9 1178

关掉重新开启可以
客户端代码

<?php
//连接swoole tcp 服务
$client = new swoole_client(SWOOLE_SOCK_TCP);
if (!$client->connect("127.0.0.1",9501)){
    echo "连接失败";
    exit;
}
//php cli常量
fwite(STDOUT,"请输入消息:");
$msg = trim(fgets("STDIN"));

//发送消息给tcp server服务器
$client->send($msg);

//接受来自server的数据
$result = $client->recv();
echo $result;

执行

xxxx@Mac client % php tcp.php
请输入消息:123
Server: 6 - 6 123%                     

服务端’worker_num’ => 8,//worker进程数 cpu 1-4倍这里设置每次修改需要重启服务,生产环境及其不现实

cxxxo@Mac client % ps -af | grep tcp.php 
  501  2025  1844   0  1:56下午 ttys000    0:00.15 php tcp.php
  501  2026  2025   0  1:56下午 ttys000    0:00.01 php tcp.php
  501  2027  2026   0  1:56下午 ttys000    0:00.00 php tcp.php
  501  2028  2026   0  1:56下午 ttys000    0:00.00 php tcp.php
  501  2029  2026   0  1:56下午 ttys000    0:00.00 php tcp.php
  501  2030  2026   0  1:56下午 ttys000    0:00.00 php tcp.php
  501  2031  2026   0  1:56下午 ttys000    0:00.00 php tcp.php
  501  2032  2026   0  1:56下午 ttys000    0:00.00 php tcp.php
  501  2033  2026   0  1:56下午 ttys000    0:00.00 php tcp.php
  501  2034  2026   0  1:56下午 ttys000    0:00.00 php tcp.php
  501  2096  2053   0  2:32下午 ttys002    0:00.00 grep tcp.php

使用swoole->reload()方法重载,但是并未成功,后续更新…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值