Added TCP_NODELAY version
This commit is contained in:
@@ -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
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user