https://wiki.swoole.com/wiki/page/517.html
<?php class AysMysql { const CONFIG = [ 'host' => '10.200.**.***', 'port' => 3306, 'user' => '*', 'password' => '***', 'database' => '****_cms', 'charset' => 'utf8', //指定字符集 'timeout' => 2, // 可选:连接超时时间(非查询超时时间),默认为SW_MYSQL_CONNECT_TIMEOUT(1.0) ]; public $db = null; function __construct() { $this->db = new swoole_mysql; }
/** * 闭包里不好直接用变量,要用use * @return bool */ public function execute($id, $username) { $this->db->connect(self::CONFIG, function ($db, $result) use ($id, $username) { if ($result === false) { var_dump($db->connect_errno, $db->connect_error); die; } $sql = 'show tables'; $db->query($sql, function (swoole_mysql $db, $result) { //$result //select 查询返回是结果集 // add del update 返回布尔值 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(); }); }); return true; } }
$ws = new AysMysql(); $result = $ws->execute(); print_r($result.PHP_EOL); echo 'start:'.PHP_EOL;
返回输出顺序可以看出:
1.execute的找到connect后直接返回return
2.业务的逻辑
3.execute里connect操作
运用场景:
1.用户页面浏览数据数(可异步)
2.操作日志等(可异步)