关于onClose的一些疑问

dgkerry

问题描述

我官方例子中加入onClose回调属性,当触发了onClose,就会在终端中输出connection closed,但我运行后,通过浏览器访问,浏览器已经请求结束了,但终端还没输出connection closed,直到我按ctrl+z关闭运行,才显示connection closed,为何会这样呢

<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';

// 创建一个Worker监听2345端口,使用http协议通讯
$http_worker = new Worker("http://0.0.0.0:6636");

// 启动4个进程对外提供服务
$http_worker->count = 4;

// 接收到浏览器发送的数据时回复hello world给浏览器
$http_worker->onMessage = function(TcpConnection $connection, Request $request)
{
    // 向浏览器发送hello world
    $connection->send('hello world');
};
$http_worker->onClose = function(TcpConnection $connection)use($http_worker,&$all_golbal_count)
{
    echo "connection closed\n";
};
// 运行worker
Worker::runAll();
111 2 0
2个回答

dgkerry

我在$connection->send('hello world');后面加上$connection->close();后再运行,就可以实现了connection closed输出,难道我不在最后加上$connection->close(),那么他就一直长期连接?

  • 小阳光 4天前

    你可以看看Connection: Keep-Alive,因为底层tcp连接并没close

yimo

把http头设置为“Connection: Close”也许能解决你的问题

  • 暂无评论
×
🔝