<?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操作等耗時操作,因為比較影響客戶體驗和使用性能
- 不影響主線程邏輯