You've already forked qlg.tsgz.moe
Init Repo
This commit is contained in:
114
vendor/swoole/tests/swoole_client_async/buffer_full.php.phpt
vendored
Executable file
114
vendor/swoole/tests/swoole_client_async/buffer_full.php.phpt
vendored
Executable file
@@ -0,0 +1,114 @@
|
||||
--TEST--
|
||||
swoole_client: onBufferFull & onBufferEmpty
|
||||
|
||||
--SKIPIF--
|
||||
<?php require __DIR__ . '/../include/skipif.inc'; ?>
|
||||
--INI--
|
||||
assert.active=1
|
||||
assert.warning=1
|
||||
assert.bail=0
|
||||
assert.quiet_eval=0
|
||||
|
||||
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/../include/bootstrap.php';
|
||||
require_once __DIR__ . '/../include/swoole.inc';
|
||||
|
||||
$port = get_one_free_port();
|
||||
|
||||
$pm = new ProcessManager;
|
||||
$pm->parentFunc = function ($pid) use ($port)
|
||||
{
|
||||
Swoole\Async::set(['log_level' => 5, 'display_errors' => false]);
|
||||
$client = new Swoole\Client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
|
||||
$client->set(['socket_buffer_size' => 1 * 1024 * 1024,]);
|
||||
$client->buffer = array();
|
||||
|
||||
$client->on("connect", function (Swoole\Client $cli)
|
||||
{
|
||||
for ($i = 0; $i < 1024; $i++)
|
||||
{
|
||||
$data = str_repeat('A', 8192);
|
||||
if ($cli->send($data) === false and $cli->errCode == 1008) {
|
||||
$cli->buffer[] = $data;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$client->on("receive", function (Swoole\Client $cli, $data)
|
||||
{
|
||||
$cli->send(pack('N', 8) . 'shutdown');
|
||||
$cli->close();
|
||||
assert($data === md5_file(TEST_IMAGE));
|
||||
});
|
||||
|
||||
$client->on("error", function($cli){
|
||||
echo "Connect failed\n";
|
||||
});
|
||||
|
||||
$client->on("close", function($cli){
|
||||
|
||||
});
|
||||
|
||||
$client->on("bufferEmpty", function (Swoole\Client $cli)
|
||||
{
|
||||
echo "bufferEmpty\n";
|
||||
foreach ($cli->buffer as $k => $data)
|
||||
{
|
||||
if ($cli->send($data) === false and $cli->errCode == 1008)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
unset($cli->buffer[$k]);
|
||||
}
|
||||
}
|
||||
if (count($cli->buffer) == 0)
|
||||
{
|
||||
$cli->close();
|
||||
}
|
||||
});
|
||||
|
||||
$client->on("bufferFull", function (Swoole\Client $cli)
|
||||
{
|
||||
echo "bufferFull\n";
|
||||
});
|
||||
|
||||
$client->connect(TCP_SERVER_HOST, $port, 0.5);
|
||||
Swoole\Event::wait();
|
||||
};
|
||||
|
||||
$pm->childFunc = function () use ($pm, $port)
|
||||
{
|
||||
$socket = stream_socket_server("tcp://0.0.0.0:{$port}", $errno, $errstr) or die("$errstr ($errno)<br />\n");
|
||||
$pm->wakeup();
|
||||
while ($conn = stream_socket_accept($socket))
|
||||
{
|
||||
for ($i = 0; $i < 4; $i++)
|
||||
{
|
||||
usleep(500000);
|
||||
for ($j = 0; $j < 256; $j++)
|
||||
{
|
||||
$data = fread($conn, 8192);
|
||||
}
|
||||
}
|
||||
fclose($conn);
|
||||
break;
|
||||
}
|
||||
fclose($socket);
|
||||
};
|
||||
|
||||
$pm->childFirst();
|
||||
$pm->run();
|
||||
?>
|
||||
--EXPECT--
|
||||
bufferFull
|
||||
bufferEmpty
|
||||
bufferFull
|
||||
bufferEmpty
|
||||
bufferFull
|
||||
bufferEmpty
|
||||
bufferFull
|
||||
bufferEmpty
|
Reference in New Issue
Block a user