Added TCP_NODELAY version

This commit is contained in:
ftc
2023-03-04 08:57:52 +03:00
parent b88d21d4cf
commit 1f24ff5d52
2 changed files with 40 additions and 1 deletions
+5
View File
@@ -162,6 +162,11 @@ class IPSocket extends Socket
} }
$this->connected = true; $this->connected = true;
} }
public function setOption($option, $value)
{
socket_set_option($this->sock, SOL_SOCKET, $option, $value);
}
} }
class UnixSocket extends Socket class UnixSocket extends Socket
+35 -1
View File
@@ -1,4 +1,4 @@
<?php <?php
require_once('Socket.php'); require_once('Socket.php');
require_once('SharedMemoryChannel.php'); require_once('SharedMemoryChannel.php');
@@ -33,6 +33,31 @@ function testSocket($amount, $reconnect, $size)
} }
} }
function testSocketNoDelay($amount, $reconnect, $size)
{
$s = null;
$current = 0;
for ($i = 0; $i < $amount; $i++)
{
if ($s === null)
{
$s = new IPSocket('127.0.0.1', 19876);
$s->setOption(TCP_NODELAY, 1);
$s->connect();
$current = 0;
}
$m = makeRequest($size);
$s->sendMessage($m);
$r = $s->receiveMessage();
$current++;
if ($current >= $reconnect)
{
$s = null;
}
}
}
function testUnixSocket($amount, $reconnect, $size) function testUnixSocket($amount, $reconnect, $size)
{ {
$s = null; $s = null;
@@ -104,6 +129,15 @@ $finish = microtime(true);
$elapsed = $finish - $start; $elapsed = $finish - $start;
print('Total: '.round($elapsed, 3).' seconds, '.round($requests_amount / $elapsed, 3).' RPS'."\n"); print('Total: '.round($elapsed, 3).' seconds, '.round($requests_amount / $elapsed, 3).' RPS'."\n");
print("Testing IP socket with TCP_NODELAY:\n");
$start = microtime(true);
testSocketNoDelay($requests_amount, $requests_per_connect, $request_size);
$finish = microtime(true);
$elapsed = $finish - $start;
print('Total: '.round($elapsed, 3).' seconds, '.round($requests_amount / $elapsed, 3).' RPS'."\n");
print("Testing Unix socket:\n"); print("Testing Unix socket:\n");
$start = microtime(true); $start = microtime(true);
testUnixSocket($requests_amount, $requests_per_connect, $request_size); testUnixSocket($requests_amount, $requests_per_connect, $request_size);