php event拓展基本使用
2019-02-04 22:02:28
(527)
1. 确定io复用类型(select/poll/epoll)
```php
$cfg = new EventConfig();
$cfg->avoidMethod("select");
$cfg->avoidMethod("epoll");
$base = new EventBase($cfg);
$sig = Event::signal($base, SIGTERM, function($signal, $parameter) {
echo "signal captured", PHP_EOL;
});
$sig->addSignal();
var_dump($base->getMethod()); //打印io模型
$base->loop(); //开始时间循环
```
说明:
- 通过调用EventBase的初始化参数的`avoidMethod`方法排除指定的io模型,留下期望的模型
- linux中SIGKILL信号应用程序无权处理,需注意
2. 基于event的信号处理
```php
$base = new EventBase();
$sig = Event::signal($base, SIGTERM, function($signal, $parameter) {
echo "signal captured", PHP_EOL;
});
$sig->addSignal();
$base->loop();
```
3. 基于event的定时器(单次)
```php
$base = new EventBase;
$waitTime = 3; //设置定时时间
$event = Event::timer($base, function($t) {
echo "$waitTime seconds elapsed", PHP_EOL;
}, $waitTime);
$event->addTimer($waitTime);
$base->loop();
````
4. 基于event的定时器(多次)
```php
$base = new EventBase;
$event = new Event($base, -1, Event::TIMEOUT | Event::PERSIST, function() {
echo "i am timer", PHP_EOL;
}); //Event::PERSIST
$event->add(3);
$base->loop();
```