Maison  >  Article  >  cadre php  >  swoole apprentissage Mysql asynchrone

swoole apprentissage Mysql asynchrone

coldplay.xixi
coldplay.xixiavant
2021-03-18 11:27:472258parcourir

swoole apprentissage Mysql asynchrone

Exemple officiel :

$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();
    });});

Recommandé (gratuit) : swoole

Fonctions communes :

connect($config, $callback) Se connecter à la base de données

$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));
  • host Adresse IP de l'hôte
  • portNuméro de port, par défaut 3306
  • user Nom d'utilisateur
  • passwordMot de passe
  • databaseBase de données sélectionnée
  • charsetDéfinir le jeu de caractères du client
  • timeout Délai d'expiration de la connexion, par défaut 1.0

$callbackFonction de rappelfunction($db, $result )

  • $db objet swoole_mysql
  • $result valeur de retour, quand elle est vraie Pour exécuter query, quand c'est false, vous pouvez obtenir le code d'erreur et les informations d'erreur via $db->connect_errno et $db->connect_error

query($sql, $callback) pour exécuter l'instruction SQL

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

$sql est l'instruction SQL à exécuter
$callback fonction de rappel
Chaque connexion MySQLi ne peut exécuter qu'un seul SQL à la fois, et doit attendre le résultat de retour avant d'exécuter le SQL suivant

fonction de rappel function($link,$result)

  • Lorsque l'exécution SQL échoue, c'est-à-dire $result == false, le message d'erreur peut être obtenu via $link->error et le code d'erreur peut être obtenu via $link->errno
  • L'exécution est réussie, $result == true, via $link->affected_rowsObtenir le nombre de lignes concernées, $link->insert_idObtenir l'ID d'auto-incrémentation de l'insertopération
  • Quand
  • est exécuté avec succès et SQL est une instruction de requête, $result renvoie un tableau de résultats de requête

closeFermez la connexion

 $db->close();

Fermez toute la connexion SQL

on($event_name,$callback)Fonction de rappel

Actuellement, il n'y en a qu'une seuleswoole_mysql 🎜>Fonction de rappelonClose

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

Choses dans swoole_mysql

sont détaillés dans la documentation officielle :

Ouvrir les chosesbegin(function($db,$result))

    démarrer une
  • transaction si la transaction est démarrée avec succès, la fonction spécifiée sera rappelée. MySQL
  • est combinée avec
  • et commit pour implémenter rollback le traitement des transactions MySQL
  • Le même
  • objet de connexion ne peut démarrer qu'une seule transaction à en même temps MySQL
  • Vous devez attendre la transaction précédente
  • t ou commi pour continuer à démarrer une nouvelle transaction rollback
  • Sinon la couche inférieure lancera
  • exception, l'exception SwooleMySQLException est code21

commit transaction commit($callback)

    commit transaction, lorsque le serveur renvoie une réponse Rappelez cette fonction
  • Vous doit d'abord appeler start pour démarrer la transaction avant d'appeler commit, sinon la couche inférieure lancera
  • ExceptionSwooleMySQLException
  • Exception
  • est code22

Thing rollback rollback($callback)

    Begin doit être appelé pour démarrer la transaction avant que la restauration puisse être appelée. Sinon, la couche inférieure lancera une
  • ExceptionSwooleMySQLException
  • Une exception
  • est code 22
  • Exemple officiel :
$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";
        });
    });});

                                             

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer