
SwooleCoroutineMySQL::setDefer를 사용하여 MySQL 작업을 비동기적으로 처리할 때, 이미 실행 중인 쿼리에서 defer를 호출하면 오류가 발생하는 이유는 MySQL 쿼리가 완료되기 전에 defer를 호출하기 때문입니다.
이러한 오류를 해결하기 위해서는 MySQL 쿼리가 완료된 후에 defer를 호출해야 합니다. 이를 위해 MySQL 쿼리를 완료한 후에 defer를 호출하는 콜백 함수를 사용할 수 있습니다.
예를 들어, 다음과 같이 MySQL 쿼리를 완료한 후에 defer를 호출하는 콜백 함수를 사용할 수 있습니다.
#hostingforum.kr
php
$mysql = new SwooleCoroutineMySQL();
$mysql->connect('127.0.0.1', 3306, 'root', 'password');
$mysql->query('SELECT * FROM table');
$mysql->on('result', function($mysql) {
$mysql->setDefer(function() use ($mysql) {
// defer를 호출하는 코드
});
});
이러한 방법을 사용하면 MySQL 쿼리가 완료된 후에 defer를 호출할 수 있습니다.
2025-08-10 19:34