Heim > PHP-Framework > Swoole > Hauptteil

Swoole lernt asynchrones MySQL

coldplay.xixi
Freigeben: 2021-03-18 11:27:47
nach vorne
2255 Leute haben es durchsucht

Swoole lernt asynchrones MySQL

Offizielles Beispiel:

$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();
    });});
Nach dem Login kopieren

Empfohlen (kostenlos): swoole

Allgemeine Funktionen:

connect($config, $callback) Mit Datenbank verbinden

$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));
Nach dem Login kopieren
  • host Host-IP-Adresseconnect($config, $callback) 连接数据库
    $sql = "select * from test ";$db->query($sql,function($link,$result){});
    Nach dem Login kopieren
    • host 主机ip地址
    • port端口号,默认3306
    • user用户名
    • password密码
    • database选择的数据库
    • charset设置客户端字符集
    • timeout 连接超时时间,默认1.0

    $callback回调函数function($db, $result )

    • $db swoole_mysql的对象
    • $result 返回值 , 为true的时候才能执行query , 为false的时候 , 可以通过$db->connect_errno$db->connect_error获取错误码和错误信息

    query($sql, $callback) 执行sql语句

     $db->close();
    Nach dem Login kopieren

    $sql为要执行的SQL语句
    $callback回调函数
    每个MySQLi连接只能同时执行一条SQL,必须等待返回结果才能执行下一条SQL

    回调函数function($link,$result)

    • 当SQL执行失败即$result == false的时候,通过$link->error可获得错误信息,$link->errno获得错误码
    • 执行成功,$result == true ,通过$link->affected_rows获得受影响的行数 , $link->insert_id获得insert操作的自增ID
    • 执行成功 且SQL为查询语句的时候, $result返回的是查询结果数组

    close关闭连接

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

    将整个SQL连接关闭

    on($event_name,$callback) 回调函数

    目前swoole_mysql只有一个onClose回调函数

    $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";
            });
        });});
    Nach dem Login kopieren

    swoole_mysql中的事物

    在官方文档中有详细介绍:

    begin(function($db,$result))开启事物

    • 启动一个MySQL事务,事务启动成功会回调指定的函数
    • commitrollback结合实现MySQL事务处理
    • 同一个MySQL连接对象,同一时间只能启动一个事务
    • 必须等到上一个事务commit或rollback才能继续启动新事务
    • 否则底层会抛出SwooleMySQLException异常,异常code21

    commit($callback)提交事物

    • 提交事务,当服务器返回响应时回调此函数
    • 必须先调用begin启动事务才能调用commit否则底层会抛出SwooleMySQLException异常
    • 异常code22

    rollback($callback)事物回滚

    • 必须先调用begin启动事务才能调用rollback否则底层会抛出SwooleMySQLException异常
    • 异常code22
    • portPortnummer, Standard 3306
    • userBenutzername
    passwordPassword

  • databaseDie ausgewählte Datenbank
  • charsetLegen Sie den Client-Zeichensatz fest

  • Zeitüberschreitung Verbindungszeitüberschreitung, Standard 1.0🎜🎜$callbackCallback function function($db, $result)🎜
    • $ db swoole_mysql-Objekt 🎜
    • $result Rückgabewert, query kann nur ausgeführt werden, wenn es wahr ist und wenn es false ist code> können Sie den Fehlercode und die Fehlerinformationen über $db->connect_errno und $db->connect_error🎜🎜🎜query($sql.) abrufen , $callback) SQL-Anweisung ausführenrrreee🎜$sql ist die auszuführende SQL-Anweisung
      $callbackCallback-Funktion
      Jeder MySQLi Die Verbindung kann nur eine SQL gleichzeitig ausführen, und Sie müssen auf das Rückgabeergebnis warten, bevor Sie die nächste SQL ausführen🎜🎜Rückruffunktion function($link,$result)🎜
    • Wenn die SQL-Ausführung fehlschlägtWenn $result == false, kann die Fehlermeldung über $link->error und der Fehlercode abgerufen werden erhalten Sie über $link->errno🎜Ausführung erfolgreich, $result == true, erhalten Sie die Anzahl der betroffenen Zeilen über $link- >affected_rows, $link->insert_id code>Rufen Sie die Auto-Inkrement-ID des insert-Vorgangs ab🎜
    • Wenn die Ausführung erfolgreich ist und Das SQL ist eine Abfrageanweisung. $result gibt das Abfrageergebnis-Array zurück. 🎜🎜🎜 >on($event_name,$callback)
    • Rückruffunktion
      🎜aktuell swoole_mysql hat nur eine onClose Rückruffunktion 🎜
      rrreee🎜🎜Dinge in swoole_mysql 🎜🎜
      🎜 werden ausführlich in der offiziellen Dokumentation beschrieben: 🎜
      🎜begin(function($db,$result))Öffne Dinge
      • Starten Sie eine MySQL-Transaktion. Wenn die Transaktion erfolgreich gestartet wurde, wird die angegebene Funktion zurückgerufen🎜
      • Kombiniert mit commit und Rollback zur Implementierung der MySQL-Transaktionsverarbeitung🎜
      • Dasselbe MySQL-Verbindungsobjekt. Es kann nur eine Transaktion gleichzeitig gestartet werden🎜
      • Sie muss warten, bis die vorherige Transaktion commit oder rollback ist, um mit dem Starten einer neuen Transaktion fortzufahren 🎜
      • Andernfalls löst die unterste Ebene eine SwooleMySQLExceptionAusnahme aus , die Ausnahme code ist 21🎜🎜🎜commit($callback)Transaktion festschreiben
        • Transmit der Transaktion und rufen Sie diese Funktion auf, wenn der Server eine Antwort zurückgibt🎜
        • Sie müssen zuerst begin aufrufen, um die Transaktion zu starten, bevor Sie commit aufrufen, andernfalls löst die unterste Ebene eine SwooleMySQLException-Ausnahme aus🎜
        • Exceptioncode ist 22🎜🎜🎜rollback($callback)Thing rollback
          • Begin muss aufgerufen werden, um die Transaktion zu starten bevor Rollback aufgerufen werden kann. Andernfalls wirft die unterste Ebene die Ausnahme SwooleMySQLException aus 🎜
          • Die Ausnahme code ist 22🎜🎜🎜Offizielles Beispiel: 🎜rrreee🎜                                                   
  • Das obige ist der detaillierte Inhalt vonSwoole lernt asynchrones MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:csdn.net
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage