前面源码安装完成,现在进入学习时间,顺便做一些笔记
//创建server端代码
<?php
//创建对象
$server = new Swoole_server('0.0.0.0',9501);
$server->set(array(
'worker_num' => 2, //设置启动的Worker进程数量。Swoole采用固定Worker进程的模式。
'max_request' => 100 //此参数表示worker进程在处理完n次请求后结束运行。manager会重新创建一个worker进程。此选项用来防止worker进程内存溢出。
));
//监听连接进入事件
/**
* $fd 表示客户端链接server的唯一标识,自增的形式
* $reactor_id 线程标识
*/
$server->on('Connect', function ($server, $fd, $reactor_id){
echo "Connect:{$fd} - {$reactor_id} success\n";
});
//监听链接接收事件
$server->on('receive', function ($server, $fd, $from_id, $data){
//send给客户端发送数据 $fd 客户端唯一标识
//$from_id 线程ID
$server->send($fd, "Server:{$fd} - {$from_id} - {$data}\n");
echo 'get '.$fd .':'.$data."\n";
});
//关闭监听事件
$server->on('Close', function ($server, $fd){
echo "Close {$fd}\n\n";
});
$server->start();
知识兔验证是否可用方法有多种
第一种:命令形式
root@VM-0-16-ubuntu:/data/www# telnet 127.0.0.1 9501
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
123
Server:4 - 0 - 123
知识兔服务端输出打印对应的输出
Connect:4 - 0 success
get 4:123
知识兔第二种方法,使用swoole client 服务
<?php
//创建对象
$client = new Swoole_client(SWOOLE_SOCK_TCP);
//判断是否连接成功,返回bool值
if (!$client->connect('127.0.0.1', 9501)){
echo "Connect error\n";
exit;
};
//PHP cli常量
fwrite(STDOUT,'请输入:');
$msg = trim(fgets(STDIN));
//发送消息给服务器 ,判断是否发送成功 返回 bool值
if (!$client->send($msg)){
echo "send error\n";
};
//接收服务器发送的数据
$res = $client->recv();
echo $res . "\n";
知识兔肯能还有别的方法来验证,才疏学浅只能用这两种方式
最后,查看server的set设置是否生效可以使用ps命令查看,如修改需要重启服务端server
root@VM-0-16-ubuntu:/data/www# ps -aft | grep tcp_server.php
13059 pts/3 S+ 0:00 \_ grep --color=auto tcp_server.php
12828 pts/2 Sl+ 0:00 \_ /usr/local/php/bin/php tcp_server.php
12829 pts/2 S+ 0:00 \_ /usr/local/php/bin/php tcp_server.php
12831 pts/2 S+ 0:00 \_ /usr/local/php/bin/php tcp_server.php
12832 pts/2 S+ 0:00 \_ /usr/local/php/bin/php tcp_server.php
知识兔