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";