国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

bug: php8執(zhí)行GatewayClient\Gateway::getAllGroupIdList();多次后,只能得到空數(shù)組

dignfei

用定時(shí)器不斷執(zhí)行 Gateway::getAllGroupIdList();剛開(kāi)始有用,幾分鐘后只能得到空數(shù)組。Gateway::getAllClientIdCount()得到0

有沒(méi)有辦法銷毀Gateway,重新連接?

嘗試:定時(shí)器每3秒重復(fù)運(yùn)行:

\GatewayClient\Context::clear();
Gateway::$registerAddress = '127.0.0.1:9138';
$aaa = Gateway::getAllUidList();

在php7.4.8沒(méi)問(wèn)題。在php8.0.3報(bào)錯(cuò):

  thrown

  at vendor/workerman/gatewayclient/Gateway.php:450
    446▕         $uid_map = array();
    447▕         foreach ($data as $local_ip => $buffer_array) {
    448▕             foreach ($buffer_array as $local_port => $items) {
    449▕                 //$items = ['connection_id'=>['uid'=>x, 'group'=>[x,x..], 'session'=>[..]], 'client_id'=>[..], ..];
  ? 450▕                 foreach ($items as $connection_id => $info) {
    451▕                     if (!empty($info['uid'])) {
    452▕                         $uid_map[$info['uid']] = $info['uid'];
    453▕                     }
    454▕                 }

   Whoops\Exception\ErrorException

  Uncaught ErrorException: foreach() argument must be of type array|object, bool given in /var/www/html/vendor/workerman/gatewayclient/Gateway.php:450
Stack trace:
#0 /var/www/html/vendor/workerman/gatewayclient/Gateway.php(450): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'foreach() argum...', '/var/www/html/v...', 450)
#1 /var/www/html/app/Http/Controllers/Index/Reload.php(2121): GatewayClient\Gateway::getAllUidList()

截圖

2376 3 0
3個(gè)回答

dignfei

php4.8不會(huì)這樣。 php8開(kāi)啟jit會(huì)這樣

  • 暫無(wú)評(píng)論
evilk

現(xiàn)階段,還是用php7.4,比較穩(wěn)妥

  • dignfei 2021-05-01

    有的包需要8.0才能運(yùn)行,沒(méi)辦法

dignfei

找到了原因,這個(gè)方法,在php8中運(yùn)行多次后會(huì)出錯(cuò):
GatewayClient\GatewayProtocol的encode方法:
{

    /**
     * 獲取整個(gè)包的 buffer
     *
     * @param mixed $data
     * @return string
     */
    public static function encode($data)
    {
        $flag = (int)is_scalar($data['body']);
        if (!$flag) {
            $data['body'] = serialize($data['body']);
        }
        $data['flag'] |= $flag;
        $ext_len      = strlen($data['ext_data']);
        $package_len  = self::HEAD_LEN + $ext_len + strlen($data['body']);
        return pack("NCNnNnNCnN", $package_len,
                $data['cmd'], $data['local_ip'],
                $data['local_port'], $data['client_ip'],
                $data['client_port'], $data['connection_id'],
                $data['flag'], $data['gateway_port'],
                $ext_len) . $data['ext_data'] . $data['body'];
    }

但是不知道是哪里錯(cuò)了,需要重復(fù)運(yùn)行多次之后才會(huì)出錯(cuò)

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??