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

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

coldplay.xixi
リリース: 2021-03-18 11:27:47
転載
2296 人が閲覧しました

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 までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート