eio_grp

(PECL eio >= 0.0.1dev)

eio_grpリクエストグループを作る

説明

eio_grp(callable $callback, string $data = NULL): resource

eio_grp() は、リクエストグループを作ります。

パラメータ

callback

callback 関数が、リクエスト終了時にコールされます。 この関数のプロトタイプは、

void callback(mixed $data, int $result[, resource $req]);
に一致しなければなりません。
data

は、リクエストに渡すカスタムデータです。

result

にはリクエスト固有の結果が格納されます。基本的には、対応するシステムコールが返すそのままの値となります。

req

はオプションで指定するリクエストリソースです。 eio_get_last_error() のような関数で使えます。

data

callback に渡す任意の引数。

戻り値

eio_grp() は、成功した場合にリクエストグループリソースを返します。失敗した場合に false を返します

例1 eio_grp() の例

<?php
$temp_filename 
dirname(__FILE__) ."/eio-file.tmp";
$fp fopen($temp_filename"w");
fwrite($fp"some data");
fclose($fp);
$my_file_fd NULL;

/* グループリクエストが終了したときに呼ばれます */
function my_grp_done($data$result) {
 
// もしファイルが残っていれば削除します
 
@unlink($data);
}

/* テンポラリファイルを開いたときに呼ばれます */
function my_grp_file_opened_callback($data$result) {
 global 
$my_file_fd$grp;

 
$my_file_fd $result;

 
$req eio_read($my_file_fd40,
   
EIO_PRI_DEFAULT"my_grp_file_read_callback");
 
eio_grp_add($grp$req);
}

/* ファイルを読み終えたときに呼ばれます */
function my_grp_file_read_callback($data$result) {
 global 
$my_file_fd$grp;

 
var_dump($result);

 
// ファイルを閉じるリクエストを作ります
 
$req eio_close($my_file_fd);

 
// リクエストをグループに追加します
 
eio_grp_add($grp$req);
}

// リクエストグループを作ります
$grp eio_grp("my_grp_done"$temp_filename);

// リクエストを作ります
$req eio_open($temp_filenameEIO_O_RDWR EIO_O_APPEND NULL,
  
EIO_PRI_DEFAULT"my_grp_file_opened_callback"NULL);

// リクエストをグループに追加します
eio_grp_add($grp$req);

// リクエストを処理します
eio_event_loop();
?>

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

string(4) "some"

参考

  • eio_grp_cancel() - リクエストグループをキャンセルする
  • eio_grp_add() - リクエストをリクエストグループに追加する
関連キーワード:  リクエスト, eio, グループ, 関数, callback, data, string, some, 参考, 格納