Home>Article>PHP Framework> swoole learning asynchronous Mysql

swoole learning asynchronous Mysql

coldplay.xixi
coldplay.xixi forward
2021-03-18 11:27:47 2174browse

swoole learning asynchronous Mysql

Official example:

$db = new swoole_mysql();$server = array( 'host' => '127.0.0.1', 'port' => 3306, 'user' => 'test', 'password' => 'test', 'database' => 'test', 'charset' => 'utf8', //指定字符集 'timeout' => 2, // 可选:连接超时时间(非查询超时时间),默认为SW_MYSQL_CONNECT_TIMEOUT(1.0));$db->connect($server, function ($db, $result) { if ($result === false) { var_dump($db->connect_errno, $db->connect_error); die; } $sql = 'show tables'; $db->query($sql, function(swoole_mysql $db, $result) { 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(); });});

Recommended (free):swoole

Commonly used functions:

connect($config, $callback)Connect to database

$config= array( 'host' => '127.0.0.1', 'port' => 3306, 'user' => 'test', 'password' => 'test', 'database' => 'test', 'charset' => 'utf8', //指定字符集 'timeout' => 2, // 可选:连接超时时间(非查询超时时间),默认为SW_MYSQL_CONNECT_TIMEOUT(1.0));
  • hostHost ip address
  • portPort number, default 3306
  • userusername
  • passwordpassword
  • databaseSelected database
  • charsetSet the client character set
  • timeoutConnection timeout, default 1.0

$callbackCallback functionfunction($db, $result)

  • $dbswoole_mysql object
  • $resultThe return value can only be executed when it is truequery. When it isfalse, it can be executed through$db->connect_errnoand$db->connect_errorGet error code and error information

##query($sql, $callback)Execute sql statement
$sql = "select * from test ";$db->query($sql,function($link,$result){});

$sqlis the SQL statement to be executed
$callbackCallback functionEach MySQLi connection can only execute one SQL statement at the same time, and must wait for the result to be returned before executing the next one. A SQL

callback function

function($link,$result)

    When SQL execution fails, that is,
  • $result == falseAt this time, the error message can be obtained through$link->error,$link->errnocan obtain the error code,
  • execution is successful,
  • $result = = true, get the number of affected rows through$link->affected_rows,$link->insert_idget the auto-increment ofinsertoperation When ID
  • is executed successfully and SQL is a query statement,
  • $resultreturns the query result array

closeClose the connection
$db->close();

Close the entire SQL connection

on($event_name,$callback)Callback function

Currently

swoole_mysqlThere is only oneonCloseCallback function

//mysql连接关闭时,自动触发$db->on('close',function($db){ echo "mysql connection is closed";});

Things in swoole_mysql

## are detailed in the official documentation:

begin(function($db,$result))

Open things

Start a
    MySQL
  • transaction. If the transaction is started successfully, The functionspecified by the callback is combined with
  • commit
  • androllbackto implementMySQLtransaction processingthe same
  • MySQL
  • Connection object, only one transaction can be started at the same timeYou must wait until the previous transaction
  • commi
  • t orrollbackto continue to start a new transactionOtherwise, the bottom layer will throw a
  • Swoole\MySQL\Exception
  • exception. The exceptioncodeis21
  • ##commit($callback )
Commit the transaction

Submit the transaction, this function will be called back when the server returns a response

    You must first call begin to start the transaction before calling commit, otherwise the bottom layer will throw
  • Swoole \MySQL\Exception
  • Exception
  • Exceptioncode
  • is
  • 22##rollback($callback)
  • Things rollback

You must first call begin to start the transaction before you can call rollback, otherwise the bottom layer will throwSwoole\MySQL\Exception

Exception
  • Exceptioncode
  • 22
  • ##Official example:
    $db->begin(function( $db, $result) { $db->query("update userinfo set level = 22 where id = 1", function($db, $result) { $db->commit(function($db, $result) { echo "commit ok\n"; }); });});

The above is the detailed content of swoole learning asynchronous Mysql. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete