使用场景:
- 可以在MySQL查询等待期间来干别的。。。
异步mysql用到主要函数有:
- swoole_mysql->construct 创建异步mysql客户端。
- swoole_mysql->connect 异步连接到MySQL服务器。
- swoole_mysql->close 关闭mysql连接 这是必须要有的
mysql.php: 这是面向对象的方式,参数没有传只是一个例子。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
<?php /** * Created by bingxiong. * Date: 4/17/18 * Time: 5:56 PM * Description: */ class AsyMysql{ public $dbSource = ""; public function __construct(){ $this->dbSource = new Swoole\Mysql; $this->dbConfig =[ 'host'=>'127.0.0.1', 'port'=>8889, 'user'=>'root', 'password'=>'root', 'database'=>'mooc', 'charset'=>'utf8' ]; } public function update(){ } public function add(){ } public function execute($id,$username){ // connect $this->dbSource->connect($this->dbConfig,function ($db,$result){ echo "mysql-connected".PHP_EOL; if($result===false){ var_dump($db->connect_error); // 打印错误信息 // todo } $sql = "select * from users where id=7"; // query(add select update delete) $db->query($sql,function ($db,$result){ // select => result返回的是查询的结果集 // add upate delete result返回的是布尔型 if($result===false){ //todo }elseif($result===true){ //todo }else{ print_r($result); } $db->close(); }); }); return true; } } $obj = new AsyMysql(); $flags = $obj->execute(1,'bing'); var_dump($flags).PHP_EOL; echo "start".PHP_EOL; |
效果:注意执行顺序,是先把整个逻辑执行完才执行的mysql
官网例子(面向过程的方式)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$db = new swoole_mysql; $server = array( 'host' => '192.168.56.102', 'port' => 3306, 'user' => 'test', 'password' => 'test', 'database' => 'test', 'charset' => 'utf8', //指定字符集 'timeout' => 2, // 可选:连接超时时间(非查询超时时间),默认为SW_MYSQL_CONNECT_TIMEOUT(1.0) ); $db->connect($server, function ($db, $r) { if ($r === false) { var_dump($db->connect_errno, $db->connect_error); die; } $sql = 'show tables'; $db->query($sql, function(swoole_mysql $db, $r) { if ($r === false) { var_dump($db->error, $db->errno); } elseif ($r === true ) { var_dump($db->affected_rows, $db->insert_id); } var_dump($r); $db->close(); }); }); 使用实例 |