개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.24 01:49

SwooleCoroutineMySQL::query 에서 결과를 처리하는 방법에 대해 도와주세요

목록
  • 마이크로서비스연구가 10일 전 2025.05.24 01:49 인기
  • 157
    1
저는 SwooleCoroutineMySQL::query 함수를 사용하여 MySQL 데이터베이스에서 데이터를 조회하려고 합니다. 하지만, query 함수가 반환하는 결과를 처리하는 방법에 대해 모르겠습니다.

query 함수는 Coroutine 의 결과를 반환하나요? 만약 그렇다면, 어떻게 결과를 처리해야 하는가요?

또한, query 함수가 실패할 경우 예외가 발생하나요? 만약 그렇다면, 어떤 예외가 발생하나요?

    댓글목록

    profile_image
    나우호스팅  10일 전



    SwooleCoroutineMySQL::query 함수는 Coroutine의 결과를 반환하지 않습니다. 대신, 결과를 처리하는 데 사용할 수 있는 여러 가지 방법이 있습니다.

    1. yield: Swoole 4.x 버전부터는 yield 키워드를 사용하여 Coroutine의 결과를 처리할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $mysql = new SwooleCoroutineMySQL();
    
    $mysql->connect('127.0.0.1', 3306, 'root', 'password');
    
    $mysql->query('SELECT * FROM table_name');
    
    $result = yield $mysql->getResult();
    
    


    2. Coroutine::wait: Swoole 4.x 버전부터는 Coroutine::wait 함수를 사용하여 Coroutine의 결과를 처리할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $mysql = new SwooleCoroutineMySQL();
    
    $mysql->connect('127.0.0.1', 3306, 'root', 'password');
    
    $mysql->query('SELECT * FROM table_name');
    
    $result = yield $mysql->getResult();
    
    Coroutine::wait($mysql);
    
    


    query 함수가 실패할 경우, SwooleCoroutineMySQL::query 함수는 Exception을 발생시키지 않습니다. 대신, Coroutine의 결과를 처리하는 동안 에러가 발생하면 Coroutine::exception 함수를 사용하여 예외를 처리할 수 있습니다.

    예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $mysql = new SwooleCoroutineMySQL();
    
    $mysql->connect('127.0.0.1', 3306, 'root', 'password');
    
    try {
    
        $mysql->query('SELECT * FROM table_name');
    
        $result = yield $mysql->getResult();
    
    } catch (Exception $e) {
    
        echo $e->getMessage();
    
    }
    
    


    또는, Coroutine::exception 함수를 사용하여 예외를 처리할 수 있습니다.

    #hostingforum.kr
    php
    
    $mysql = new SwooleCoroutineMySQL();
    
    $mysql->connect('127.0.0.1', 3306, 'root', 'password');
    
    Coroutine::exception(function () use ($mysql) {
    
        $mysql->query('SELECT * FROM table_name');
    
        $result = yield $mysql->getResult();
    
    });
    
    

    2025-05-24 01:50

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 24,809건 / 19 페이지

검색

게시물 검색