ホームページ  >  記事  >  PHPフレームワーク  >  swooleは非同期Mysqlを学習しています

swooleは非同期Mysqlを学習しています

coldplay.xixi
coldplay.xixi転載
2021-03-18 11:27:472225ブラウズ

swooleは非同期Mysqlを学習しています

公式例:

$db = new swoole_mysql();$server = array(
    'host' => '127.0.0.1',
    'port' => 3306,
    'user' => 'test',
    'password' => 'test',
    'database' => 'test',
    'charset' => 'utf8', //指定字符集
    'timeout' => 2,  // 可选:连接超时时间(非查询超时时间),默认为SW_MYSQL_CONNECT_TIMEOUT(1.0));$db->connect($server, function ($db, $result) {
    if ($result === false) {
        var_dump($db->connect_errno, $db->connect_error);
        die;
    }
    $sql = 'show tables';
    $db->query($sql, function(swoole_mysql $db, $result) {
        if ($result === false)
        {
            var_dump($db->error, $db->errno);
        }
        elseif ($result === true )
        {
            var_dump($db->affected_rows, $db->insert_id);
        }
        var_dump($result);
        $db->close();
    });});

推奨 (無料):swoole

よく使用される関数:

connect($config, $callback) データベースに接続

$config= array(
    'host' => '127.0.0.1',
    'port' => 3306,
    'user' => 'test',
    'password' => 'test',
    'database' => 'test',
    'charset' => 'utf8', //指定字符集
    'timeout' => 2,  // 可选:连接超时时间(非查询超时时间),默认为SW_MYSQL_CONNECT_TIMEOUT(1.0));
  • #host ホスト IP アドレス
  • # port
  • ポート番号、デフォルト 3306
  • user
  • username
  • password
  • password
  • database
  • 選択したデータベース
  • charset
  • クライアント文字セットを設定します
  • timeout
  • 接続タイムアウト、デフォルトは 1.0
$callback

コールバック関数function($db, $result)

    $db
  • swoole_mysql オブジェクト
  • $result
  • 戻り値は、true query の場合にのみ実行できます。false の場合は、$db->connect_errno を通じて実行できます。 and$db->connect_errorエラー コードとエラー情報の取得
  • ##query($sql, $callback)
SQL ステートメントの実行

$sql = "select * from test ";$db->query($sql,function($link,$result){});
$sql

は実行される SQL ステートメントです

$callbackコールバック関数
各 MySQLi 接続は同時に 1 つの SQL ステートメントのみを実行できます。 SQLcallback function
function($link,$result)

SQL 実行時失敗、つまり

$result == false
    このとき、エラー メッセージは
  • $link->error$link->errno# を通じて取得できます。 ## エラー コードを取得できます。 実行は成功しました。$result = = true
  • $link->affected_rows
  • を通じて影響を受ける行の数を取得します。 $link->insert_idinsert 操作の自動インクリメントを取得します。ID が正常に実行され、SQL がクエリ ステートメントである場合、$result クエリ結果の配列を返します
  • close
  • 接続を閉じます
 $db->close();

SQL 接続全体を閉じます

on($ event_name,$callback)

コールバック関数

現在swoole_mysql

onClose

コールバック関数

//mysql连接关闭时,自动触发$db->on('close',function($db){
	echo "mysql connection is closed";});
は1つだけですswoole_mysql の内容

## は公式ドキュメントで詳しく説明されています:

begin(function($db,$result))

Open things

Start a MySQLtransaction.トランザクションが正常に開始されると、コールバックで指定された関数

  • commit## と結合されます# および rollback を使用して
  • MySQL
  • トランザクション処理を実装します 同じ MySQL 接続オブジェクト。同時に開始できるトランザクションは 1 つだけです 新しいトランザクションの開始を続けるには、前のトランザクション
  • commi
  • t または rollback が完了するまで待つ必要があります。
  • そうしないと、最下層が ## をスローします。 #Swoole\MySQL\Exception 例外。例外 code21
  • ##commit($callback )トランザクションをコミットしますトランザクションを送信します。サーバーが応答を返すと、この関数が呼び戻されます。
コミットを呼び出す前に、最初に begin を呼び出してトランザクションを開始する必要があります。そうしないと、最下層がスローします。

Swoole \MySQL\ExceptionException

Exception
    code
  • 22
  • rollback($callback) Things rollbackロールバックを呼び出す前に、まず begin を呼び出してトランザクションを開始する必要があります。そうしないと、最下層が
  • Swoole\MySQL\Exception
Exception

をスローします。 例外コード

    22
  • ##公式例:
$db->begin(function( $db, $result) {
    $db->query("update userinfo set level = 22 where id = 1", function($db, $result) {
        $db->commit(function($db, $result) {
            echo "commit ok\n";
        });
    });});
  • 以上がswooleは非同期Mysqlを学習していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

    関連記事

    続きを見る