関数・クラス解説

MysqlndUhConnection::reapQuery

version:PECL mysqlnd-uh >= 1.0.0-alpha (公式)

Get result from async query

公式リファレンス

書式

public MysqlndUhConnection::reapQuery ( mysqlnd_connection $connection ) : bool

説明

Get result from async query.

パラメータ

connection
Mysqlnd connection handle. Do not modify!

返値

Returns TRUE on success. Otherwise, returns FALSE

サンプル

例1 MysqlndUhConnection::reapQuery() example

class proxy extends MysqlndUhConnection {  public function reapQuery($res) {   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));   $ret = parent::reapQuery($res);   printf("%s returns %s\n", __METHOD__, var_export($ret, true));   return $ret;  } } mysqlnd_uh_set_connection_proxy(new proxy()); $conn1 = new mysqli("localhost", "root", "", "test"); $conn2 = new mysqli("localhost", "root", "", "test"); $conn1->query("SELECT 1 as 'one', SLEEP(1) AS _sleep FROM DUAL", MYSQLI_ASYNC |  MYSQLI_USE_RESULT); $conn2->query("SELECT 1.1 as 'one dot one' FROM DUAL", MYSQLI_ASYNC |  MYSQLI_USE_RESULT); $links = array(  $conn1->thread_id => array('link' => $conn1, 'processed' => false),  $conn2->thread_id => array('link' => $conn2, 'processed' => false) ); $saved_errors = array(); do {  $poll_links = $poll_errors = $poll_reject = array();  foreach ($links as $thread_id => $link) {   if (!$link['processed']) {    $poll_links[] = $link['link'];    $poll_errors[] = $link['link'];    $poll_reject[] = $link['link'];   }  }  if (0 == count($poll_links))   break;  if (0 == ($num_ready = mysqli_poll($poll_links, $poll_errors, $poll_reject, 0, 200000)))   continue;  if (!empty($poll_errors)) {   die(var_dump($poll_errors));  }  foreach ($poll_links as $link) {   $thread_id = mysqli_thread_id($link);   $links[$thread_id]['processed'] = true;   if (is_object($res = mysqli_reap_async_query($link))) {    // result set object    while ($row = mysqli_fetch_assoc($res)) {     // eat up all results     var_dump($row);    }    mysqli_free_result($res);   } else {    // either there is no result (no SELECT) or there is an error    if (mysqli_errno($link) > 0) {     $saved_errors[$thread_id] = mysqli_errno($link);     printf("'%s' caused %d\n", $links[$thread_id]['query'],     mysqli_errno($link));    }   }  } } while (true);

上の例の出力は以下となります。

proxy::reapQuery(array ( 0 => NULL, )) proxy::reapQuery returns true array(1) { ["one dot one"]=> string(3) "1.1" } proxy::reapQuery(array ( 0 => NULL, )) proxy::reapQuery returns true array(2) { ["one"]=> string(1) "1" ["_sleep"]=> string(1) "0" }

参考

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_real_async_query()
  • ワード検索


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

    関数名アルファベット別

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