swoole异步操作mysql

<?php
class AysMysql{
    public $swoole_mysql;
    public $dbConfig = [];
    
    public function __construct(){
        $this->swoole_mysql = new swoole_mysql();//创建实例
        //连接配置
        $this->dbConfig = [
            'host'     => '122.51.29.205',
            'port'     => 3306,
            'user'     => 'root',
            'password' => 'root',
            'database' => 'ws',    
        ];
    }
    
    //实现数据操作
    public function excute($sql){
        //连接mysql
        $this->swoole_mysql->connect($this->dbConfig,function ($db,$res) use ($sql){
            if($res===false){
                echo '数据库连接失败';
                return;
            }
            
            //执行sql
            $db->query($sql,function ($db,$res2){
                //对执行结果进行判断
                if($res2===false){
                    echo 'SQL执行失败:'.$db->error.PHP_EOL;
                }else if($res2===true){
                    //非查询语句执行
                    echo "sql语句执行成功,影响行数 : " . $db->affected_rows.PHP_EOL;
                }else{
                    //查询语句打印
                    var_dump($res2);
                }
                //关闭链接
                $db->close();
            });
        });
    }
}

$obj = new AysMysql();
//拼写sql语句
// $sql = "insert into user values(null,'test','123456','test@qq.com','18201119999',1)";
// $sql = "select * from user";
// $sql = "update user set username='test222' where id=15";
$sql = "delete from user where id =14";
$obj->excute($sql);

使用异步mysql好处 : 

  • 防止代码阻塞,提高代码效率

适用场合:

  • 不涉及共享资源,或对共享资源只读,即非互斥操作
  • 没有时序上的严格关系
  • 不需要原子操作,或可以通过其他方式控制原子性
  • 常用于IO操作等耗时操作,因为比较影响客户体验和使用性能
  • 不影响主线程逻辑
原文地址:https://www.cnblogs.com/jiangshiguo/p/12690026.html