最近一直再读GateWayWorkerman源码 遇到一点困惑希望得到帮助。在GatewayWorker/Lib/Gateway.php文件中有一些TCP的问题不是很理解。
/**
* 发送buffer数据到网关
* @param string $address
* @param string $gateway_buffer
* @return bool
*/
protected static function sendBufferToGateway($address, $gateway_buffer)
{
// 有$businessWorker说明是workerman环境,使用$businessWorker发送数据
if (self::$businessWorker) {
if (!isset(self::$businessWorker->gatewayConnections)) {
return false;
}
return self::$businessWorker->gatewayConnections->send($gateway_buffer, true);
}
// 非workerman环境
$gateway_buffer = self::$secretKey ? self::generateAuthBuffer() . $gateway_buffer : $gateway_buffer;
$flag = self::$persistentConnection ? STREAM_CLIENT_PERSISTENT | STREAM_CLIENT_CONNECT : STREAM_CLIENT_CONNECT;
$client = stream_socket_client("tcp://$address", $errno, $errmsg, self::$connectTimeout, $flag);
return strlen($gateway_buffer) == stream_socket_sendto($client, $gateway_buffer);
}
这个函数中非workerman环境 启动了一个Socket客户端 发送完数据后不用调用关闭socket的命令么?
还有在 sendAndRecv函数中也没有见到关闭Socket函数的命令,这些打开过的客户端Socket不需要显示关闭么?
难道是等待心跳超时GateWay端来关闭么?
可以复用,不关闭
相关链接 http://wenda.workerman.net/?/question/1382
非常感谢!!!!!