workerman统计在线人数

workerman 统计在线人数实现代码:

服务器端代码

useWorkerman\Worker;

useWorkerman\Lib\Timer;

require_once__DIR__ . '/Workerman/Autoloader.php';


$worker= newWorker('websocket://127.0.0.1:2345');

// 全局变量,保存当前进程的客户端连接数

$connection_count= 0;


// 这个例子中进程数必须为1

$worker->count= 1;

$worker->onConnect = function($connection)

{

    // 有新的客户端连接时,连接数+1

    global$connection_count;


    ++$connection_count;

    echo"now connection_count=$connection_count\n";

};

// 进程启动时设置一个定时器,定时向所有客户端连接发送数据

$worker->onWorkerStart = function($worker)

{

    // 定时,每10秒一次

    Timer::add(1, function()use($worker)

    {

        global$connection_count;

        // 遍历当前进程所有的客户端连接,发送当前服务器的时间

        foreach($worker->connections as$connection)

        {

            $connection->send($connection_count);

        }

    });

};

$worker->onClose = function($connection)

{

    // 客户端关闭时,连接数-1

    global$connection_count;

    $connection_count--;

    echo"now connection_count=$connection_count\n";

};

// 运行worker

Worker::runAll();

当客户端与Workerman建立连接时(TCP三次握手完成后)触发的回调函数。每个连接只会触发一次onConnect回调。

当客户端连接与Workerman断开时触发的回调函数。不管连接是如何断开的,只要断开就会触发onClose。每个连接只会触发一次onClose。

客户端代码


?>

本文来自PHP中文网的workerman教程栏目:https://www.php.cn/workerman/

你可能感兴趣的:(workerman统计在线人数)