
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