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

Libevent 疑問

echo1
class Libevent
{
    /**
     * base event
     *
     * @var null
     */
    public $baseEvent = NULL;

    public function __construct()
    {
        $this->baseEvent = event_base_new();
    }

    public function add($fd, $flag = EV_READ, $callback, $args = [])
    {
        $event = event_new();

        if (!$event) {
            exit("event_new faild\n");
        }

        $flag = $flag == EV_READ ? EV_READ | EV_PERSIST : EV_WRITE | EV_PERSIST;

        if (!event_set($event, $fd, $flag, $callback, null)) {
            exit("event_set faild\n");
        }

        if (!event_base_set($event, $this->baseEvent)) {
            exit("event_base_set faild\n");
        }

        if (!event_add($event)) {
            exit("event_add faild\n");
        }

        //$this->arr[] = $event;
    }

    public function loop()
    {
        $ret = event_base_loop($this->baseEvent);

        if ($ret == 1) {
            exit("no events were registered\n");
        } else if ($ret == -1) {
            exit("event_base_loop faild\n");
        }
    }

}

function read($fd)
{
    $buffer = fread($fd, 65536);

    $buffer = trim($buffer);

    echo $buffer ."\n";
}

$libevent = new Libevent();

$libevent->add(STDIN, EV_READ, 'read');

$libevent->loop();

@walkor 大大, 我對workerman 的libevent 進(jìn)行了拆解, 測試,

我運(yùn)行中,注釋掉 $this->arr[] = $event; 這行, 命令行會(huì)提示 no events were registered,

當(dāng)我不注釋時(shí)正常運(yùn)行, 請問下, 這是怎么一回事, 求解答。

php 的版本是 php5.5.34的

3047 1 0
1個(gè)回答

walkor 打賞

$event 變量是函數(shù)內(nèi)部局部變量,出了函數(shù)作用域就釋放了,所以有問題。
加上$this->arr[] = $event; 這句將局部變量存儲(chǔ)了起來,就不會(huì)被釋放,所以沒問題

  • echo1 2016-11-11

    @1 , event_base_set($event, $this->baseEvent), 這句話不是將 $event 關(guān)聯(lián)到$this->baseEvent么, 為啥外面的變量還能影響的到 libevent的執(zhí)行?

  • walkor 2016-11-11

    這個(gè)要看event擴(kuò)展源碼是怎么處理的

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