関数・クラス解説
EventHttpConnection::setCloseCallback
version:PECL event >= 1.8.0 (公式)Set callback for connection close
公式リファレンス
書式
public EventHttpConnection::setCloseCallback ( callable $callback [, mixed $data ] ) : void
callback ([ EventHttpConnection $conn = NULL [, mixed $arg = NULL ]] ) : void
説明
Sets callback for connection close.
パラメータ
- callback
- Callback which is called when connection is closed. Should match the following prototype:
返値
値を返しません。
サンプル
例1 EventHttpConnection::setCloseCallback() example
<?php/* * Setting up close-connection callback * * The script handles closed connections using HTTP API. * * Usage: * 1) Launch the server: * $ php examples/http_closecb.php 4242 * * 2) Launch a client in another terminal. Telnet-like * session should look like the following: * * $ nc -t 127.0.0.1 4242 * GET / HTTP/1.0 * Connection: close * * The server will output something similar to the following: * * HTTP/1.0 200 OK * Content-Type: multipart/x-mixed-replace;boundary=boundarydonotcross * Connection: close * * <html> * * 3) Terminate the client connection abruptly, * i.e. kill the process, or just press Ctrl-C. * * 4) Check if the server called _close_callback. * The script should output "_close_callback" string to standard output. * * 5) Check if the server's process has no orphaned connections, * e.g. with `lsof` utility. */function _close_callback($conn){ echo __FUNCTION__, PHP_EOL;}function _http_default($req, $dummy){ $conn = $req->getConnection(); $conn->setCloseCallback('_close_callback', NULL); /* By enabling Event::READ we protect the server against unclosed conections. This is a peculiarity of Libevent. The library disables Event::READ events on this connection, and the server is not notified about terminated connections. So each time client terminates connection abruptly, we get an orphaned connection. For instance, the following is a part of `lsof -p $PID | grep TCP` command after client has terminated connection: 57-php 15057 ruslan 6u unix 0xffff8802fb59c780 0t0 125187 socket 58:php 15057 ruslan 7u IPv4 125189 0t0 TCP *:4242 (LISTEN) 59:php 15057 ruslan 8u IPv4 124342 0t0 TCP localhost:4242->localhost:37375 (CLOSE_WAIT) where $PID is our process ID. The following block of code fixes such kind of orphaned connections. */ $bev = $req->getBufferEvent(); $bev->enable(Event::READ); // We have to free it explicitly. See EventHttpRequest::getConnection()$bev->free(); // we have to free it explicitly $req->addHeader( 'Content-Type', 'multipart/x-mixed-replace;boundary=boundarydonotcross', EventHttpRequest::OUTPUT_HEADER ); $buf = new EventBuffer(); $buf->add('<html>'); $req->sendReply(200, "OK"); $req->sendReplyChunk($buf);}$port = 4242;if ($argc > 1) { $port = (int) $argv[1];}if ($port <= 0 || $port > 65535) { exit("Invalid port");}$base = new EventBase();$http = new EventHttp($base);$http->setDefaultCallback("_http_default", NULL);$http->bind("0.0.0.0", $port);$base->loop();?>
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール