<?php class mysql { private $param; public $db; public function __construct() { $this->db = new swoole_mysql; $this->param = array( 'host' => '127.0.0.1', 'user' => 'root', 'password' => '123', 'database' => 'test', ); } public function exec($sql) { $this->db->connect($this->param, function ($db, $result) use ($sql) { if ($result === false) { echo "连接数据库失败 : 错误代码:" . $db->connect_errno . PHP_EOL . $db->connect_error; return false; } $db->query($sql, function ($db, $res) { if ($res === false) { // error属性获得错误信息,errno属性获得错误码 echo "sql语句执行错误 : " . $db->error; } else if ($res === true) { // 非查询语句 affected_rows属性获得影响的行数,insert_id属性获得Insert操作的自增ID echo "sql语句执行成功,影响行数 : " . $db->affected_rows; } else { //查询语句 $result为结果数组 var_dump($res); } $db->close(); }); }); } } $mysql = new mysql();
使用异步mysql好处 :
- 防止代码阻塞,提高代码效率
适用场合:
- 不涉及共享资源,或对共享资源只读,即非互斥操作
- 没有时序上的严格关系
- 不需要原子操作,或可以通过其他方式控制原子性
- 常用于IO操作等耗时操作,因为比较影响客户体验和使用性能
- 不影响主线程逻辑