Swoole 학습 비동기 MySQL

coldplay.xixi
풀어 주다: 2021-03-18 11:27:47
앞으로
2163명이 탐색했습니다.

Swoole 학습 비동기 MySQL

공식 예:

$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(); });});
로그인 후 복사

권장(무료):swoole

공통 기능:

connect($config, $callback)데이터베이스에 연결

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

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

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

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

    $db->close();
    로그인 후 복사

    $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";});
    로그인 후 복사

    将整个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"; }); });});
    로그인 후 복사

    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
    • port포트 번호, 기본값 3306
    • user사용자 이름
    passwordPassword

  • database선택한 데이터베이스
  • charset클라이언트 문자 집합 설정

  • timeout연결 시간 초과, 기본값 1.0$callback콜백 함수function($db, $result)
    • $ dbswoole_mysql 객체
    • $result반환 값,query는 true일 때만,false일 경우에만 실행 가능 code> 의 경우$db->connect_errno$db->connect_errorquery($sql)를 통해 오류 코드 및 오류 정보를 얻을 수 있습니다. , $callback)SQL 문 실행rrreee$sql은 실행할 SQL 문입니다.
      $callback콜백 함수
      각 MySQLi 연결은 동시에 하나의 SQL만 실행할 수 있으며 다음 SQLCallback 함수function($link,$result)
    • SQL 실행이 실패할 경우$result == false인 경우$link->error를 통해 오류 메시지를 얻을 수 있으며, 오류 코드는$link->errno실행이 성공하고,$result == true를 통해 가져옵니다.$link-를 통해 영향을 받은 행 수를 가져옵니다. >affected_rows,$link->insert_idcode>삽입작업의 자동 증가 ID를 가져옵니다
    • 실행이 성공하면 SQL은 쿼리 문입니다.$result는 쿼리 결과 배열을 반환합니다close연결 닫기rrreee전체 SQL 연결 닫기on($event_name,$callback)콜백 함수
      현재 swoole_mysql에는 onClose콜백 함수가 하나만 있습니다
      rrreee swoole_mysql
      의 내용은 공식 문서에 자세히 설명되어 있습니다:
      begin(function($db,$result))Open things
      • MySQL트랜잭션을 시작합니다. 트랜잭션이 성공적으로 시작되면 지정된 함수가 다시 호출됩니다
      • commit롤백하여MySQL트랜잭션 처리를 구현합니다
      • 동일한MySQL연결 개체, 동시에 하나의 트랜잭션만 시작할 수 있습니다
      • 당신 새 트랜잭션을 계속 시작하려면 이전 트랜잭션이commit 또는rollback될 때까지 기다려야 합니다.
      • 그렇지 않으면 하단 레이어에서SwooleMySQLException예외가 발생합니다. , 예외code21commit($callback)트랜잭션 커밋
        • 트랜잭션 제출 그리고 서버가 응답을 반환할 때 이 함수를 호출하세요
        • 커밋을 호출하기 전에 트랜잭션을 시작하려면 먼저 start를 호출해야 합니다. 그렇지 않으면 맨 아래 계층에서SwooleMySQLException예외가 발생합니다
        • Exceptioncode22rollback($callback)사물 롤백
          • 트랜잭션을 시작하려면 Begin을 호출해야 합니다. 롤백이 호출되기 전에 그렇지 않으면 맨 아래 레이어에서SwooleMySQLException예외가 발생합니다.
          • 예외code22공식 예: rrreee
  • 위 내용은 Swoole 학습 비동기 MySQL의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:csdn.net
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!