# Event::add

(PECL event >= 1.2.6-beta)

Event::add — Makes event pending

### 说明

public Event::add( float `$timeout` = ?): bool

Marks event pending. Non-pending event will never occur, and the event callback will never be called. In conjunction with Event::del() an event could be re-scheduled by user at any time.

If Event::add() is called on an already pending event, libevent will leave it pending and re-schedule it with the given timeout(if specified). If in this case timeout is not specified, Event::add() has no effect.

### 参数

`timeout`

  Timeout in seconds.

### 返回值

成功时返回 `true`， 或者在失败时返回 `false`。

### 示例

示例 #1 Adding a custom signal

`<?php
/*
Launch it in a terminal window:
$ php examples/signal.php
In another terminal window find out the pid and send SIGTERM, e.g.:
$ ps aux | grep examp
ruslan 3976 0.2 0.0 139896 11256 pts/1 S+ 10:25 0:00 php examples/signal.php
ruslan 3978 0.0 0.0 9572 864 pts/2 S+ 10:26 0:00 grep --color=auto examp
$ kill -TERM 3976
At the first terminal window you should catch the following:
Caught signal 15
*/
class MyEventSignal {
private $base, $ev;
public function __construct($base) {
$this->base = $base;
$this->ev = Event::signal($base, SIGTERM, array($this, 'eventSighandler'));
$this->ev->add();
}
public function eventSighandler($no, $c) {
echo "Caught signal $no\n";
$this->base->exit();
}
}
$base = new EventBase();
$c = new MyEventSignal($base);
$base->loop();
?>`

以上示例的输出类似于：

    Caught signal 15

示例 #2 Adding a timer

`<?php
$base = new EventBase();
$n = 2;
$e = Event::timer($base, function($n) use (&$e) {
echo "$n seconds elapsed\n";
$e->delTimer();
}, $n);
$e->add($n);
$base->loop();
?>`

以上示例的输出类似于：

    2 seconds elapsed

### 参见

- Event::add()
- Event::del() - Makes event non-pending
- Event::signal() - Constructs signal event object
- Event::timer() - Constructs timer event object

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open