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

workerman/http/client,定時器不斷增加是正常還是Bug?

veinliu

經(jīng)過測試,http/client 每連接一次計時器數(shù)量加一,時間長了CPU占用老高了。

4160 6 0
6個回答

veinliu

是我打開方式不對還是怎么回事?

  • 暫無評論
veinliu
 public function __construct($option = [])
    {
        $this->_option = $this->_option = array_merge($this->_option, $option);
       // Timer::add(1, [$this, 'closeTimeoutConnection']);

       // var_dump();
    }
注頭釋掉線程池里面的定時器這一行,定時器不再增加,但是不知道線程池是不是沒有了?
打算再改一改,到closeTimeoutConnection,里面close 連接的時候unset定時器不知道哪個比較科學。
  • 暫無評論
walkor 打賞

每個client實例有一個定時器。業(yè)務代碼復用workerman/http/client實例,不要每次都初始化一個workerman/http/client實例

  • veinliu 2019-12-21

    非常感謝,我是要連接不同的IP的不同端口很多次去查詢結果,不知道實例化應該寫在哪里,能不能給提供一個例子參考。新手,真沒什么概念,我先自己想,您能提供個例子就更好了。

veinliu
 $inner_http_worker1 = new Worker('http://0.0.0.0:2122');
        // 當http客戶端發(fā)來數(shù)據(jù)時觸發(fā)
        $inner_http_worker1->onMessage = function($http_connection, $data) {
             global $uidConnectionMap,$rfid,$channel;
            $_POST = $_POST ? $_POST : $_GET;
            $channel = @$_POST['channel'];
            $position = @$_POST['position'];
            $rfid = @$_POST['rfid'];
            //var_dump($_POST);
            $post = "{way_code:001,position:".$position.",RfidNo:".$rfid."}";
            //$post = '{"way_code":"001","position":"1","RfidNo":"1000000002"}';
           // var_dump($post);
            $http = new Workerman\Http\Client();
            //var_dump($channel);
            //$http->post('http://172.50.10.2:7090/facematch/v1/request', $post, function($response) {
            $http->post('http://'.$channel.':7090/facematch/v1/request',  $post, function($response){
             //   var_dump($response->getStatusCode());

                $data = json_decode($response->getBody(),true);
               // var_dump($data);
                echo ($response->getBody());
                if ($data['Content'] != null && $data['Status'] == 1){
                  //  var_dump($response->getBody());
                    new passenger($response->getBody(),$GLOBALS['channel']);

                }
                //global $rfid;
              //  var_dump($GLOBALS['rfid']);

            }, function($exception){
                $ident = 'FR2SAC';
                new logErr($ident,$exception);
               // echo $exception;
            });

            return $http_connection->send('1');
        };`
        $inner_http_worker->listen();
//比方說這段代碼,我多次的post url 和數(shù)據(jù),讓httpclient去取結果,我沒編過程,沒參考代碼我就不知道怎么弄了。
  • 暫無評論
veinliu

改好了,今天去服務器上更新一下。
昨天下午注釋掉了定時器那行,在生產(chǎn)中運行,今天去應該程序還沒什么問題??戳硕〞r器的用法,才明白定時器那行是每秒去做一次超時連接斷開。

  • 暫無評論
workmanxinshou

在 onWorkerStart 回調中實例化 http/Client

  • veinliu 2019-12-22

    說來慚愧,我知道在onWorkerStart中實例化,但在$inner_http_worker1->onMessage中老提示沒定義這個變量,網(wǎng)上找了老半天才知道怎么弄,沒編過程的人對代碼一點概念都沒有。

  • veinliu 2019-12-22

    好在,有worker這樣的大師級的人物寫出了這么好用的框架,再加上有這么多高手網(wǎng)上給解決問題提出意見。

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