用workman做的壓力測(cè)試
代碼如下
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
use Workerman\Lib\Timer;
use Workerman\Connection\AsyncTcpConnection;
$worker = new Worker();
$worker->onWorkerStart = 'connect';
function connect()
{
static $count = 0;
// 20000個(gè)鏈接
if ($count++ >= 20000) return;
// 建立異步鏈接
$con = new AsyncTcpConnection('ws://127.0.0.1:5555');
$con->onConnect = function($con)
{
// 遞歸調(diào)用connect
connect();
};
$con->onMessage = function($con, $msg)
{
//echo "recv $msg\n";
};
$con->onClose = function($con)
{
echo "con close\n";
};
// 當(dāng)前鏈接每10秒發(fā)個(gè)心跳包
Timer::add(10, function()use($con)
{
$con->send("ping");
});
$con->connect();
echo $count, " connections complete\n";
}
Worker::runAll();