You've already forked qlg.tsgz.moe
Init Repo
This commit is contained in:
50
vendor/swoole/examples/length/async_client.php
vendored
Executable file
50
vendor/swoole/examples/length/async_client.php
vendored
Executable file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
function send(swoole_client $cli)
|
||||
{
|
||||
$data = array(
|
||||
'str1' => str_repeat('A', rand(100000, 900000)),
|
||||
'str2' => str_repeat('B', rand(100000, 900000)),
|
||||
'str3' => str_repeat('C', rand(10000, 90000)),
|
||||
);
|
||||
|
||||
$data['int1'] = rand(100000, 999999);
|
||||
|
||||
$sendStr = serialize($data);
|
||||
$sendData = pack('N', strlen($sendStr)) . $sendStr;
|
||||
$cli->send($sendData);
|
||||
echo "send length=" . strlen($sendData) . ", SerId={$data['int1']}\n";
|
||||
}
|
||||
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); //异步非阻塞
|
||||
|
||||
$client->set(array(
|
||||
'open_length_check' => 1,
|
||||
'package_length_type' => 'N',
|
||||
'package_length_offset' => 0, //第N个字节是包长度的值
|
||||
'package_body_offset' => 4, //第几个字节开始计算长度
|
||||
'package_max_length' => 2000000, //协议最大长度
|
||||
));
|
||||
|
||||
$client->on("connect", function(swoole_client $cli) {
|
||||
send($cli);
|
||||
});
|
||||
|
||||
$client->on("receive", function (swoole_client $cli, $data) {
|
||||
$resp = unserialize(substr($data, 4));
|
||||
echo "recv length=" . strlen($data) . ", SerId={$resp['int1']}\n".str_repeat('-', 60)."\n";
|
||||
$cli->close();
|
||||
// sleep(1);
|
||||
//usleep(200000);
|
||||
//send($cli);
|
||||
});
|
||||
|
||||
$client->on("error", function(swoole_client $cli){
|
||||
echo "error\n";
|
||||
});
|
||||
|
||||
$client->on("close", function(swoole_client $cli){
|
||||
echo "Connection close\n";
|
||||
});
|
||||
|
||||
$client->connect('127.0.0.1', 9501);
|
||||
|
39
vendor/swoole/examples/length/client.php
vendored
Executable file
39
vendor/swoole/examples/length/client.php
vendored
Executable file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
$client = new swoole_client(SWOOLE_SOCK_TCP);
|
||||
|
||||
$client->set(array(
|
||||
'open_length_check' => true,
|
||||
'package_length_type' => 'N',
|
||||
'package_length_offset' => 0, //第N个字节是包长度的值
|
||||
'package_body_offset' => 4, //第几个字节开始计算长度
|
||||
'package_max_length' => 2000000, //协议最大长度
|
||||
));
|
||||
|
||||
if (!$client->connect('127.0.0.1', 9501))
|
||||
{
|
||||
exit("connect failed\n");
|
||||
}
|
||||
|
||||
for ($i = 0; $i < 10; $i++)
|
||||
{
|
||||
$data = array(
|
||||
'str1' => str_repeat('A', rand(10000, 20000)),
|
||||
'str2' => str_repeat('B', rand(5000, 10000)),
|
||||
'str3' => str_repeat('C', rand(1000, 9000)),
|
||||
);
|
||||
|
||||
$data['int1'] = rand(100000, 999999);
|
||||
$sendStr = serialize($data);
|
||||
$sendData = pack('N', strlen($sendStr)) . $sendStr;
|
||||
$client->send($sendData);
|
||||
echo "send length=" . strlen($sendData) . ", SerId={$data['int1']}\n";
|
||||
|
||||
for ($j = 0; $j < 3; $j++)
|
||||
{
|
||||
$resp = $client->recv();
|
||||
$data2 = unserialize(substr($resp, 4));
|
||||
echo "#$j\trecv length=" . strlen($resp) . ", SerId={$data2['int1']}\n";
|
||||
}
|
||||
}
|
||||
sleep(2);
|
||||
|
3
vendor/swoole/examples/length/config.php
vendored
Executable file
3
vendor/swoole/examples/length/config.php
vendored
Executable file
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
$loop1 = 1;
|
||||
$loop2 = 3;
|
26
vendor/swoole/examples/length/func.php
vendored
Executable file
26
vendor/swoole/examples/length/func.php
vendored
Executable file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
$serv = new swoole_server("127.0.0.1", 9501);
|
||||
|
||||
$serv->set(array(
|
||||
'open_length_check' => true,
|
||||
'dispatch_mode' => 1,
|
||||
'package_length_func' => function ($data) {
|
||||
if (strlen($data) < 8) {
|
||||
return 0;
|
||||
}
|
||||
$length = intval(trim(substr($data, 0, 8)));
|
||||
if ($length <= 0) {
|
||||
return -1;
|
||||
}
|
||||
return $length + 8;
|
||||
},
|
||||
'package_max_length' => 2000000, //协议最大长度
|
||||
));
|
||||
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data)
|
||||
{
|
||||
var_dump($data);
|
||||
echo "#{$serv->worker_id}>> received length=" . strlen($data) . "\n";
|
||||
});
|
||||
|
||||
$serv->start();
|
35
vendor/swoole/examples/length/server.php
vendored
Executable file
35
vendor/swoole/examples/length/server.php
vendored
Executable file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
$serv = new swoole_server("127.0.0.1", 9501, SWOOLE_BASE);
|
||||
|
||||
$serv->set(array(
|
||||
'open_length_check' => true,
|
||||
'dispatch_mode' => 1,
|
||||
// 'worker_num' => 4,
|
||||
'package_length_type' => 'N',
|
||||
'package_length_offset' => 0, //第N个字节是包长度的值
|
||||
'package_body_offset' => 4, //第几个字节开始计算长度
|
||||
'package_max_length' => 2000000, //协议最大长度
|
||||
));
|
||||
|
||||
function send(swoole_server $serv, $fd, $data)
|
||||
{
|
||||
$serv->send($fd, $data);
|
||||
echo "#send =" . strlen($data) . " bytes\n";
|
||||
}
|
||||
|
||||
$serv->on('connect', function ($serv, $fd){
|
||||
echo "Client:Connect.\n";
|
||||
});
|
||||
|
||||
$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) {
|
||||
$req = unserialize(substr($data, 4));
|
||||
echo "#{$serv->worker_id}>> received length=" . strlen($data) . ", SerId: {$req['int1']}\n";
|
||||
send($serv, $fd, $data);
|
||||
send($serv, $fd, $data);
|
||||
send($serv, $fd, $data);
|
||||
});
|
||||
|
||||
$serv->on('close', function ($serv, $fd) {
|
||||
echo "Client: Close.\n";
|
||||
});
|
||||
$serv->start();
|
Reference in New Issue
Block a user