首頁 > php框架 > Swoole > 主體

swoole學習之異步Mysql

coldplay.xixi
發布: 2021-03-18 11:27:47
轉載
2236 人瀏覽過

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使用者名稱
  • #password密碼
  • database選擇的資料庫
  • charset設定客戶端字元集
  • #timeout 連線逾時時間,預設1.0

$callback回呼函數function($db, $result )

  • $db swoole_mysql的物件
  • $result 傳回值, 為true的時候才能執行query , 為false的時候, 可以透過$db->connect_errno$db->connect_error取得錯誤碼和錯誤訊息

#query($sql, $callback) 執行sql語句

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

$sql為要執行的SQL語句
$callback回呼函數
每個MySQLi連線只能同時執行一條SQL,必須等待回傳結果才能執行下一條SQL

回呼函數function($link,$result)

  • #當SQL執行失敗即$result == false的時候,透過$link->error可獲得錯誤訊息,$link->errno獲得錯誤碼
  • 執行成功,$result = = true ,透過$link->affected_rows獲得受影響的行數, $link->insert_id獲得insert操作的自增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";});
登入後複製

swoole_mysql中的事物

在官方文件中有詳細介紹:

begin(function($db,$result))開啟事物

  • 啟動一個MySQL事務,事務啟動成功會回呼指定的函數
  • commitrollback結合實作MySQL交易處理
  • 同一個MySQL連接對象,同一時間只能啟動一個交易
  • 必須等到上一個交易commit或rollback才能繼續啟動新交易
  • 否則底層會拋出Swoole\MySQL\Exception異常,異常code21

##commit($callback )提交事物

    提交事務,當伺服器回傳回應時回呼此函數
  • 必須先呼叫begin啟動事務才能呼叫commit否則底層會拋出
  • Swoole \MySQL\Exception異常
  • 例外
  • code22

rollback($callback)事物回滾

    必須先呼叫begin啟動事務才能呼叫rollback否則底層會拋出
  • Swoole\MySQL\Exception異常
  • 例外
  • code22
官方範例:

$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中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!