Rumah > rangka kerja php > Swoole > teks badan

swoole学习之异步Mysql

coldplay.xixi
Lepaskan: 2021-03-18 11:27:47
ke hadapan
2236 orang telah melayarinya

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();
    });});
Salin selepas log masuk

推荐(免费):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));
Salin selepas log masuk
  • 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){});
Salin selepas log masuk

$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();
Salin selepas log masuk

将整个SQL连接关闭

on($event_name,$callback) 回调函数

目前swoole_mysql只有一个onClose回调函数

//mysql连接关闭时,自动触发$db->on('close',function($db){
	echo "mysql connection is closed";});
Salin selepas log masuk

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";
        });
    });});
Salin selepas log masuk

               

Atas ialah kandungan terperinci swoole学习之异步Mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!