Login
网站首页 > 文章中心 > 其它

Swoole_协程_MySQL_客户端与异步回调_MySQL_客户端的对比

作者:小编 更新时间:2023-08-16 07:07:34 浏览量:122人看过


co::create(function() {
$swoole_mysql = new Swoole\Coroutine\MySQL();
$swoole_mysql->connect([
    'host' => 'mysql',
    'port' => 3306,
    'user' => 'root',
    'password' => 'root',
    'database' => 'fastadmin',
]);
$res = $swoole_mysql->query('select sleep(1)');

// 新增
// 更新
// 查询
// 删除
// 事务操作
// ......
});


新增操作


co::create(function() {
$stmt = $db->prepare('INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES (?, ?, ?');
if ($stmt == false){
    var_dump($db->errno, $db->error);
} else {
    $ret2 = $stmt->execute(['学习 PHP', '学习 PHP', date("Y-m-d")]);
    var_dump($ret2);
}
});


查询操作


co::create(function() {
   $res = $swoole_mysql->query('SELECT * FROM runoob_tbl WHERE runoob_id=1');
if($res === false) {
    return;
}
foreach ($res as $value) {
    echo $value['runoob_title'];
} 
});


更新操作


co::create(function() {
$stmt = $db->prepare('UPDATE runoob_tbl SET runoob_title=? WHERE runoob_id=?');
if ($stmt == false){
    var_dump($db->errno, $db->error);
} else {
    $ret2 = $stmt->execute(['学习 C◆◆', 1]);
    var_dump($ret2);
}
});


删除操作


co::create(function() {
$stmt = $db->prepare('DELETE FROM runoob_tbl WHERE runoob_id=1');
if ($stmt == false){
    var_dump($db->errno, $db->error);
} else {
    $ret2 = $stmt->execute(['学习 C◆◆', 1]);
    var_dump($ret2);
}
});


事务操作


co::create(function() {
$db->begin();

$stmt = $db->prepare('INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES (?, ?, ?');
if ($stmt == false){
    var_dump($db->errno, $db->error);
} else {
    $ret2 = $stmt->execute(['学习 PHP', '学习 PHP', date("Y-m-d")]);
    var_dump($ret2);
}

$stmt = $db->prepare('UPDATE runoob_tbl SET runoob_title=? WHERE runoob_id=?');
if ($stmt == false){
    var_dump($db->errno, $db->error);
    $db->rollback();
} else {
    $ret2 = $stmt->execute(['学习 C◆◆', 1]);
    var_dump($ret2);
}

$db->commit();  
});


连接 Mysql 数据库


$db = new swoole_mySQL();

$server = [
'host' => 'mysql',
'port' => 3306,
'user' => 'root',
'password' => 'root',
'database' => 'fastadmin',
'charset'  => 'utf8',
'timeout'  => 2
];

$db->connect($server, function ($db, $r) {
if ($r === false) {
    var_dump($db->connect_errno, $db->connect_errno);
    die();
}

// 新增
// 更新
// 查询
// 删除
// 事务操作
// ......
)



// 新增
$sql = "INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES (\"学习 PHP\", \"菜鸟教程\", NOW())";
$db->query($sql, function(swoole_mySQL $db, $r) {
if ($r === false) {
    echo "新增数据失败, 错误信息: " . $db->error . ", 错误码: " . $db->errno . "\n";
} elseif ($r === true) {
    echo "新增数据成功, ID为:" . $db->insert_id, ", 影响行数: " . $db->affected_rows . "\n";
}
$db->close();
});



// 修改
$sql = "UPDATE runoob_tbl SET runoob_title='学习 C◆◆' WHERE runoob_id=1";
$db->query($sql, function(swoole_mySQL $db, $r) {
if ($r === false) {
    echo "新增数据失败, 错误信息: " . $db->error . ", 错误码: " . $db->errno . "\n";
} elseif ($r === true) {
    echo "新增数据成功, ID为:" . $db->insert_id, ", 影响行数: " . $db->affected_rows . "\n";
}
var_dump($r);
$db->close();
});



// 查询
$sql = "SELECT * FROM runoob_tbl WHERE runoob_id=1";
$db->query($sql, function(swoole_mySQL $db, $r) {
if ($r === false) {
    echo "新增数据失败, 错误信息: " . $db->error . ", 错误码: " . $db->errno . "\n";
}
var_dump($r);
$db->close();
});



// 删除
$sql = "DELETE FROM runoob_tbl WHERE runoob_id=1";
$db->query($sql, function(swoole_mySQL $db, $r) {
if ($r === false) {
    echo "新增数据失败, 错误信息: " . $db->error . ", 错误码: " . $db->errno . "\n";
}
var_dump($r);
$db->close();
});



// 事务
$db->begin(function(swoole_mySQL $db, $r) {
$sql = "INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES (\"学习 PHP\", \"菜鸟教程\", NOW())";
$db->query($sql, function(swoole_mySQL $db, $r) {
    if ($r === true) {
        $sql = "UPDATE runoob_tbl SET runoob_title1='学习 C◆◆' WHERE runoob_id=5";
        $db->query($sql, function(swoole_mySQL $db, $r){
            if ($r === true) {
                $db->commit(function(swoole_mySQL $db, $r) {
                    if ($r === true) {
                        echo "commit ok \n";
                    }
                });
            }

            if ($r === false) {
                $db->rollback(function(swoole_mySQL $db, $r) {
                    if ($r === true) {
                        echo "commit failed, rollback success \n";
                    }
                });
            }
            $db->close();
        });
    }
});
});


总结

不建议在使用异步回调模块.

参考文档

https://wiki.swoole.com/wiki/page/p-coroutine_mysql.html

以上就是土嘎嘎小编大虾米为大家整理的相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章