関数・クラス解説

EventListener::__construct

version:PECL event >= 1.2.6-beta (公式)

Creates new connection listener associated with an event base

公式リファレンス

書式

public EventListener::__construct ( EventBase $base , callable $cb , mixed $data , int $flags , int $backlog , mixed $target )

説明

Creates new connection listener associated with an event base.

パラメータ

base
Associated event base.
cb
A callable that will be invoked when new connection received.
data
Custom user data attached to cb .
flags
Bit mask of EventListener::OPT_* constants. See EventListener constants .
backlog
Controls the maximum number of pending connections that the network stack should allow to wait in a not-yet-accepted state at any time; see documentation for your system’s listen function for more details. If backlog is negative, Libevent tries to pick a good value for the backlog ; if it is zero, Event assumes that listen is already called on the socket( target )
target
May be string, socket resource, or a stream associated with a socket. In case if target is a string, the string will be parsed as network address. It will be interpreted as a UNIX domain socket path, if prefixed with 'unix:' , e.g. 'unix:/tmp/my.sock' .

返値

Returns EventListener object representing the event connection listener.

更新履歴

バージョン 説明
PECL event 1.5.0 UNIX domain sockets' support added.

サンプル

例1 EventListener::__construct() example

/*  * Simple echo server based on libevent's connection listener.  *  * Usage:  * 1) In one terminal window run:  *  * $ php listener.php 9881  *  * 2) In another terminal window open up connection, e.g.:  *  * $ nc 127.0.0.1 9881  *  * 3) start typing. The server should repeat the input.  */ class MyListenerConnection {     private $bev, $base;     public function __destruct() {         $this->bev->free();     }     public function __construct($base, $fd) {         $this->base = $base;         $this->bev = new EventBufferEvent($base, $fd, EventBufferEvent::OPT_CLOSE_ON_FREE);         $this->bev->setCallbacks(array($this, "echoReadCallback"), NULL,             array($this, "echoEventCallback"), NULL);         if (!$this->bev->enable(Event::READ)) {             echo "Failed to enable READ\n";             return;         }     }     public function echoReadCallback($bev, $ctx) {         // Copy all the data from the input buffer to the output buffer                  // Variant #1         $bev->output->addBuffer($bev->input);         /* Variant #2 */         /*         $input    = $bev->getInput();         $output = $bev->getOutput();         $output->addBuffer($input);         */     }     public function echoEventCallback($bev, $events, $ctx) {         if ($events & EventBufferEvent::ERROR) {             echo "Error from bufferevent\n";         }         if ($events & (EventBufferEvent::EOF | EventBufferEvent::ERROR)) {             //$bev->free();             $this->__destruct();         }     } } class MyListener {     public $base,         $listener,         $socket;     private $conn = array();     public function __destruct() {         foreach ($this->conn as &$c) $c = NULL;     }     public function __construct($port) {         $this->base = new EventBase();         if (!$this->base) {             echo "Couldn't open event base";             exit(1);         }         // Variant #1         /*         $this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);         if (!socket_bind($this->socket, '0.0.0.0', $port)) {             echo "Unable to bind socket\n";             exit(1);         }         $this->listener = new EventListener($this->base,             array($this, "acceptConnCallback"), $this->base,             EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE,             -1, $this->socket);          */         // Variant #2          $this->listener = new EventListener($this->base,              array($this, "acceptConnCallback"), $this->base,              EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE, -1,              "0.0.0.0:$port");         if (!$this->listener) {             echo "Couldn't create listener";             exit(1);         }         $this->listener->setErrorCallback(array($this, "accept_error_cb"));     }     public function dispatch() {         $this->base->dispatch();     }     // This callback is invoked when there is data to read on $bev     public function acceptConnCallback($listener, $fd, $address, $ctx) {         // We got a new connection! Set up a bufferevent for it. */         $base = $this->base;         $this->conn[] = new MyListenerConnection($base, $fd);     }     public function accept_error_cb($listener, $ctx) {         $base = $this->base;         fprintf(STDERR, "Got an error %d (%s) on the listener. "             ."Shutting down.\n",             EventUtil::getLastSocketErrno(),             EventUtil::getLastSocketError());         $base->exit(NULL);     } } $port = 9808; if ($argc > 1) {     $port = (int) $argv[1]; } if ($port <= 0 || $port > 65535) {     exit("Invalid port"); } $l = new MyListener($port); $l->dispatch();

ワード検索


※入力キーワードが、関数名・説明文・タグに含まれるものを検索

関数名アルファベット別

A B C D E F G H I J
K L M N O P Q R S T
U V W X Y Z _

最終更新一覧

stristr
 大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

stripslashes
 バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

stripos
 大文字小文字を区別せずに文字列が最初に現れる位置を取得する

stripcslashes
 addcslashes() でクォートされた文字列をアンクォートする

strip_tags
 文字列から HTML と PHP のタグを除去して返却

strcspn
 指定した文字が最初に現れる位置を調べる

strcoll
 ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

strcmp
 2つの文字列を比較し同じか(あるいは大小)を判定する

strchr
 strstr() のエイリアス

strcasecmp
 2つの文字列を比較(大文字小文字を区別せず同じとみなす)

カテゴリー一覧

PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール