将fd从所有组中移除

@param integer $fd
@return void
762538
public function leaveAll(int $fd)
    {
        $map = $this->map[$fd] ?? [];
        foreach($map as $group)
        {
            $group->leave($fd);
        }
    }
1067004
public function onClose(Server $server, int $fd)
    {
        /*
        WEBSOCKET_STATUS_CONNECTION = 1，连接进入等待握手
        WEBSOCKET_STATUS_HANDSHAKE = 2，正在握手
        WEBSOCKET_STATUS_FRAME = 3，已握手成功等待浏览器发送数据帧
        */
        $fdInfo = $this->getClientInfo($fd);

        if ($fdInfo['websocket_status'] > 0) {
            $total = $this->count();
            $this->log("onClose: Client #{$fd} connection has been closed. client count $total, client info:", $fdInfo, 'debug');

            if (!$meta = WebSocketContext::getMeta(null, $fd)) {
                $this->log("onClose: Client #{$fd} connection meta info has been lost");
                return;
            }

            $this->log("onClose: Client #{$fd} meta info:", $meta, 'debug');

            // 握手成功的才回调 close
            if ($meta['handshake']) {
                /** @see Dispatcher::close() */
                \bean('wsDispatcher')->close($server, $fd);
            }

            // call on close callback
            App::trigger(WsEvent::ON_CLOSE, null, $server, $fd);

            // clear context info of the connection
            WebSocketContext::del($fd);
            RequestContext::destroy();
        }
    }
221682
function cmd_RNTO($fd, $cmd)
    {
        $user = $this->getUser($fd);
        $old_file = $this->users[$user]['rename'];
        $new_file = $this->fillDirName($user, $cmd[1]);
        $this->debug("RENAME: $old_file to $new_file");
        if (empty($old_file) or !is_dir(dirname($new_file)))
        {
            $this->send($fd, "451 Rename/move failure: No such file or directory");
        }
        elseif (rename($old_file, $new_file))
        {
            $this->send($fd, "250 File successfully renamed or moved");
        }
        else
        {
            $this->send($fd, "451 Rename/move failure: Operation not permitted");
        }
        unset($this->users[$user]['rename']);
    }
733183
public function onClose(\swoole_websocket_server $server, $fd) {
        $user_id = $this->fidToUserId($fd);
        $fid = $this->userIdToFid($user_id);
        Cache::redis()->hDel('user_id_#_fid', $user_id);
        Cache::redis()->hDel('fid_#_user_id', $fid);
        Cache::release();
        CoContext::getContext()->release();
    }
1366400
public function setAll($config): void
    {
        foreach ($config as $id => $definition) {
            $this->set($id, $definition);
        }
    }
1342027
public function rooms(int $fd): array
    {
        $rooms = $this->room->keys($fd);

        $prefix = $this->channelPrefix();

        return array_filter($rooms, function (string $room) use ($prefix) {
            return strpos($room, $prefix) !== false;
        });
    }
1358815
public static function destroy($fd)
    {
        $key = static::getContextKey();
        if(isset(static::$context[$key]))
        {
            unset(static::$context[$key]);
        }
        RequestContext::getServerBean('ConnectContextStore')->destroy($key);
    }
1212217
public function setVatID($vatid)
	{
		if ( $vatid == $this->getVatID() ) { return; }

		$this->_values['vatid'] = (string) $vatid;
		$this->setModified();
	}
566082
public function joinGroup(int $fd, Group $group)
    {
        $index = array_search($group, $this->map[$fd] ?? []);
        if(false === $index)
        {
            $this->map[$fd][] = $group;
        }
    }
54400
function cmd_LIST($fd, $cmd)
    {
        $user = $this->getUser($fd);
        $ftpsock = $this->getUserSock($user);
        if (!$ftpsock)
        {
            $this->send($fd, "501 Connection Error");
            return;
        }
        $this->send($fd, "150 Opening ASCII mode data connection for file list");
        $path = $this->getAbsDir($user);
        if (isset($cmd[1]) and preg_match("/\-(.*)a/", $cmd[1]))
        {
            $showHidden = true;
        }
        else
        {
            $showHidden = false;
        }
        $filelist = $this->getFileList($path, $showHidden);
        fwrite($ftpsock, $filelist);
        $this->closeUserSock($user);
        $this->send($fd, "226 Transfer complete.");
    }
1196946
public function each($fs){
		foreach ($this->rows as $row){
			foreach ($fs as $f){
				$row->evaluar($f);
			}
		}
	}
634278
public function writeTo($fd, string $data): int
    {
        return $this->server->send($fd, $data) ? 0 : 1;
    }
974946
public function emptyDir($directory)
    {
        [$fs, $directory] = $this->getFilesystemAndPath($directory);

        $fs->emptyDir($directory);
    }
293761
private function deleteFilter($uid)
    {
        unset($this->filters[$uid]);
        $this->cache->delete($this->getCacheId($uid));
    }
1104307
function cleanBuffer($fd)
    {
        unset($this->frame_list[$fd], $this->connections[$fd]);
        parent::cleanBuffer($fd);
    }
776028
function cmd_CWD($fd, $cmd)
    {
        $user = $this->getUser($fd);
        if (($dir = $this->setUserDir($user, $cmd[1])) != false)
        {
            $this->send($fd, "250 OK. Current directory is " . $dir);
        }
        else
        {
            $this->send($fd, "550 Can't change directory to " . $cmd[1] . ": No such file or directory");
        }
    }
977317
public function kickUid($uid, $fromDispatch = false)
    {
        if ($this->uid_fd_table->exist($uid)) {//本机处理
            $fd = $this->uid_fd_table->get($uid)['fd'];
            $this->close($fd);
        } else {
            if ($fromDispatch) {
                return;
            }
            if ($this->isCluster()) {
                ProcessManager::getInstance()->getRpcCall(ClusterProcess::class, true)->my_kickUid($uid);
            }
        }
    }