workerman Worker::stopAll()后,之前的客户端连接会断开吗?对客户端有影响吗?

ontheway

比如处理1000个请求之后,调用stopAll()来终止当前进程,再重启一个进程

// 每个进程最多执行1000个请求
define('MAX_REQUEST', 1000);

$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function($connection, $data)
{
    // 已经处理请求数
    static $request_count = 0;

    $connection->send('hello http');
    // 如果请求数达到1000
    if(++$request_count >= MAX_REQUEST)
    {
        /*
         * 退出当前进程,主进程会立刻重新启动一个全新进程补充上来
         * 从而完成进程重启
         */
        Worker::stopAll();
    }
};
3088 1 0
1个回答

walkor 打赏

如果这个进程维持着客户端链接,链接会断开。

像GatewayWorker这种进程模型,因为Gateway进程维持着客户端链接,BusinessWorker进程负责处理业务逻辑,所以BusinessWorker里面Worker::stopAll();不会导致客户端链接断开,也不会影响客户端

  • 暂无评论
年代过于久远,无法发表回答
×
🔝