Swoole IO異步Msql 簡單增刪改查

Swoole IO異步Msql 持續更新

簡單IO異步Msql 實現

mysql.php

<?php
/**
 * Created by PhpStorm.
 * User: dom
 * Date: 19-2-22
 * Time: 下午4:09
 */

class AysMysql
{
    public $dbSource = "";
    public $dbConfig = [];

    public function __construct()
    {
        $this->dbSource = new swoole_mysql();
        $this->dbConfig = [
            'host' => '127.0.0.1',
            'port' => 3306,
            'user' => 'root',
            'password' => 'root',
            'database' => 'testzc',
            'charset' => 'utf8', //指定字符集
            'timeout' => 2,  // 可選:連接超時時間(非查詢超時時間),默認爲SW_MYSQL_CONNECT_TIMEOUT(1.0)
        ];
    }

    /**
     * 查詢sql
     * @author: ZhuBN
     * Date: 19-2-22 下午4:34
     */
    public function select($id)
    {
        $sql = "select * from test where id={$id}";
        $this->execute($sql);
    }

    /**
     * 修改sql
     * @author: ZhuBN
     * Date: 19-2-22 下午4:32
     */
    public function update($id, $name)
    {
        $sql = "UPDATE `testzc`.`test` SET `name` = '{$name}' WHERE `id`={$id}";
        $this->execute($sql);
    }

    /**
     * 添加sql
     * @author: ZhuBN
     * Date: 19-2-22 下午4:32
     */
    public function add($name)
    {
        $sql = "INSERT INTO `testzc`.`test`(`name`) VALUES ('{$name}')";
        $this->execute($sql);
    }

    /**
     * 刪除sql
     * @author: ZhuBN
     * Date: 19-2-22 下午4:32
     */
    public function delete($id)
    {
        $sql = "DELETE FROM `testzc`.`test` WHERE `id` = {$id}";
        $this->execute($sql);
    }

    /**
     *  mysql 執行邏輯
     * @author: ZhuBN
     * Date: 19-2-22 下午4:33
     *
     * @param string $sql
     *
     * @throws \Swoole\Mysql\Exception
     */
    private function execute($sql)
    {
        $this->dbSource->connect($this->dbConfig, function ($db, $result) use ($sql) {
            echo "看看我什麼時候輸出 1 \n";
            // $result 成功執行爲 true  否則 false
            if ($result === false) {
                var_dump($db->connect_errno, $db->connect_error);
                die;
            }

            $db->query($sql, function (swoole_mysql $db, $result) {
                if ($result === false) { // 執行失敗
                    echo "-------false-------\n";
                    var_dump($db->error, $db->errno);
                    echo "-------------------\n";
                } elseif ($result === true) { // add update delete
                    echo "--------true-------\n";
                    // $db->affected_rows 影響行數
                    // $db->insert_id 新增的id
                    var_dump($db->affected_rows, $db->insert_id);
                    echo "-------------------\n";
                } else { // select
                    echo "--------else-------\n";
                    var_dump($result);
                    echo "-------------------\n";
                }
                $db->close();
            });
        });
    }
}

$obj = new AysMysql();
//$obj->select(2);
//$obj->update(1,'ssssdd');
//$obj->add('qweqwe');
//$obj->delete(4);
echo "看看我什麼時候輸出 2 \n";
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章