Swoole 異步mysql使用


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM