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的