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

Linux下類取到的靜態(tài)成員變量為null

richmond

你想具體做什么

為了復(fù)用EventSource的長連接,我把$request->connection存放在一個自己寫的類(PRefsGlobal)的成員變量下面(嘗試過把這個靜態(tài)類文件放在support目錄下面并配置自動加載,或者把這個文件直接放到model下),并且在與其他進程通信的時候從里面拿出來推送信息給用戶。

程序代碼

public function load(Request $request)
    {
        $dirname = $request->get('dirname');
        if (!empty($dirname) && file_exists($dirname)) {
            $task_connection = new AsyncTcpConnection('text://0.0.0.0:8888');
            $task_connection->send(loadmsg($dirname));
            $task_connection->onMessage = function (AsyncTcpConnection $task_connection, $task_result) {

                PRefsGlobal::get("loadsse")->send(ssemessage($task_result));
                if ($task_result == "Loading finished.") {
                    $task_connection->close();
                    PRefsGlobal::get("loadsse")->close();
                }
            };
            $task_connection->connect();
            return ok("success");
        }
        return error(404, "Wrong dirname!");
    }
public function loadsse(Request $request)
    {
        return $this->establishsse($request, "loadsse");
    }
private function establishsse(Request &$request, $name)
    {
        $connection = $request->connection;
        if ($request->header('accept') === 'text/event-stream') {
            // 首先發(fā)送一個 Content-Type: text/event-stream 頭的響應(yīng)
            $connection->send(new Response(200, ['Content-Type' => 'text/event-stream', 'Access-Control-Allow-Origin' => '*']));
            PRefsGlobal::set($name, $connection);
            return new ServerSentEvents(['event' => 'message', 'data' => 'hello', 'id' => 1]);
        }
        return ok("ok");
    }

prefsglobal類的代碼
截圖

期待的結(jié)果及實際結(jié)果

期待由eventsource返回的處理進程的結(jié)果
實際結(jié)果
截圖

重現(xiàn)bug的步驟

訪問/api/loadsse接口

系統(tǒng)環(huán)境及workerman/webman版本

"workerman/webman-framework": "^1.4.3"

1100 1 0
1個回答

six

1、進程間是隔離的,A進程PRefsGlobal存儲了connection,在B進程是取不到的
2、PRefsGlobal::set('loadsse ', $connection); 時打印下日志,PRefsGlobal::get("loadsse")->send(ssemessage($task_result));前也打印下日志,看下有沒有執(zhí)行得到PRefsGlobal::set,并且順序是正確的

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??