您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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(); });});
常用函數(shù):
connect($config, $callback)
連接數(shù)據(jù)庫$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
選擇的數(shù)據(jù)庫
charset
設置客戶端字符集
timeout
連接超時時間,默認1.0
$callback
回調函數(shù)function($db, $result )
$db
swoole_mysql的對象
$result
返回值 , 為true的時候才能執(zhí)行query
, 為false
的時候 , 可以通過$db->connect_errno
和$db->connect_error
獲取錯誤碼和錯誤信息
query($sql, $callback)
執(zhí)行sql語句$sql = "select * from test ";$db->query($sql,function($link,$result){});
$sql
為要執(zhí)行的SQL語句$callback
回調函數(shù)
每個MySQLi連接只能同時執(zhí)行一條SQL,必須等待返回結果才能執(zhí)行下一條SQL
回調函數(shù)function($link,$result)
當SQL執(zhí)行失敗即$result == false
的時候,通過$link->error
可獲得錯誤信息,$link->errno
獲得錯誤碼
執(zhí)行成功,$result == true
,通過$link->affected_rows
獲得受影響的行數(shù) , $link->insert_id
獲得insert
操作的自增ID
執(zhí)行成功 且SQL為查詢語句的時候, $result
返回的是查詢結果數(shù)組
close
關閉連接$db->close();
將整個SQL連接關閉
on($event_name,$callback)
回調函數(shù)目前
swoole_mysql
只有一個onClose
回調函數(shù)
//mysql連接關閉時,自動觸發(fā)$db->on('close',function($db){ echo "mysql connection is closed";});
swoole_mysql中的事物
在官方文檔中有詳細介紹:
begin(function($db,$result))
開啟事物啟動一個MySQL
事務,事務啟動成功會回調指定的函數(shù)
與commit
和rollback
結合實現(xiàn)MySQL
事務處理
同一個MySQL
連接對象,同一時間只能啟動一個事務
必須等到上一個事務commi
t或rollback
才能繼續(xù)啟動新事務
否則底層會拋出Swoole\MySQL\Exception
異常,異常code
為21
commit($callback)
提交事物提交事務,當服務器返回響應時回調此函數(shù)
必須先調用begin啟動事務才能調用commit否則底層會拋出Swoole\MySQL\Exception
異常
異常code
為22
rollback($callback)
事物回滾必須先調用begin啟動事務才能調用rollback否則底層會拋出Swoole\MySQL\Exception
異常
異常code
為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”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。