関数・クラス解説

EventBufferEvent::connectHost

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

Connects to a hostname with optionally asyncronous DNS resolving

公式リファレンス

書式

public EventBufferEvent::connectHost ( EventDnsBase $dns_base , string $hostname , int $port [, int $family = EventUtil::AF_UNSPEC ] ) : bool

説明

Resolves the DNS name hostname, looking for addresses of type family ( EventUtil::AF_* constants). If the name resolution fails, it invokes the event callback with an error event. If it succeeds, it launches a connection attempt just as EventBufferEvent::connect() would.

dns_base is optional. May be NULL, or an object created with EventDnsBase::__construct() . For asyncronous hostname resolving pass a valid event dns base resource. Otherwise the hostname resolving will block.

注意:

EventDnsBase is available only if Event configured --with-event-extra ( event_extra library, libevent protocol-specific functionality support including HTTP, DNS, and RPC ).

注意:

EventBufferEvent::connectHost() requires libevent-2.0.3-alpha or greater.

パラメータ

dns_base
Object of EventDnsBase in case if DNS is to be resolved asyncronously. Otherwise NULL.
hostname
Hostname to connect to. Recognized formats are:
www.example.com (hostname) 1.2.3.4 (ipv4address) ::1 (ipv6address)[::1] ([ipv6address])
port
Port number
family
Address family. EventUtil::AF_UNSPEC , EventUtil::AF_INET , or EventUtil::AF_INET6 . See EventUtil constants .

返値

Returns TRUE on success. Otherwise FALSE.

サンプル

例1 EventBufferEvent::connectHost() example

/* Read callback */ function readcb($bev, $base) {     //$input = $bev->input; //$bev->getInput();     //$pos = $input->search("TTP");     $pos = $bev->input->search("TTP");     while (($n = $bev->input->remove($buf, 1024)) > 0) {         echo $buf;     } } /* Event callback */ function eventcb($bev, $events, $base) {     if ($events & EventBufferEvent::CONNECTED) {         echo "Connected.\n";     } elseif ($events & (EventBufferEvent::ERROR | EventBufferEvent::EOF)) {         if ($events & EventBufferEvent::ERROR) {             echo "DNS error: ", $bev->getDnsErrorString(), PHP_EOL;         }         echo "Closing\n";         $base->exit();         exit("Done\n");     } } $base = new EventBase(); $dns_base = new EventDnsBase($base, TRUE); // We'll use async DNS resolving if (!$dns_base) {     exit("Failed to init DNS Base\n"); } $bev = new EventBufferEvent($base, /* use internal socket */ NULL,     EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::OPT_DEFER_CALLBACKS,     "readcb", /* writecb */ NULL, "eventcb", $base ); if (!$bev) {     exit("Failed creating bufferevent socket\n"); } //$bev->setCallbacks("readcb", /* writecb */ NULL, "eventcb", $base); $bev->enable(Event::READ | Event::WRITE); $output = $bev->output; //$bev->getOutput(); if (!$output->add(     "GET {$argv[2]} HTTP/1.0\r\n".     "Host: {$argv[1]}\r\n".     "Connection: Close\r\n\r\n" )) {     exit("Failed adding request to output buffer\n"); } if (!$bev->connectHost($dns_base, $argv[1], 80, EventUtil::AF_UNSPEC)) {     exit("Can't connect to host {$argv[1]}\n"); } $base->dispatch();

上の例の出力は、たとえば以下のようになります。

Connected. HTTP/1.0 301 Moved Permanently Location: http://www.google.co.uk/ Content-Type: text/html; charset=UTF-8 Date: Sat, 09 Mar 2013 12:21:19 GMT Expires: Mon, 08 Apr 2013 12:21:19 GMT Cache-Control: public, max-age=2592000 Server: gws Content-Length: 221 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.co.uk/">here</A>. </BODY></HTML> Closing Done

参考

  • EventBufferEvent::connect() - Connect buffer event's file descriptor to given address or UNIX socket
  • ワード検索


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

    関数名アルファベット別

    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用の拡張モジュール