Swoole과 Workerman은 PHP 분야에서 널리 사용되는 두 가지 비동기 네트워크 프레임워크로, MySQL 데이터베이스와 상호 작용할 때 성능을 크게 향상시킬 수 있습니다. 이 기사에서는 비동기 메시지 처리의 관점에서 시작하여 두 가지의 사용법을 자세히 소개하고 실용적인 코드 예제를 제공합니다.
Swoole은 코루틴 기술을 사용하여 고성능 비동기 IO 작업을 달성하는 프로덕션 환경을 위한 비동기 네트워크 통신 엔진입니다. MySQL 프로토콜에 대한 기본 지원을 통해 개발자는 비동기식 방법을 직접 사용하여 데이터베이스 작업을 수행할 수 있으므로 쿼리 효율성이 크게 향상됩니다.
<?php
$server = new SwooleCoroutineMySQL();
$server-> 연결하다([
'호스트' => '127.0.0.1',
'포트' => 3306,
'사용자' => '사용자 이름',
'비밀번호' => '비밀번호',
'데이터베이스' => 'DB 이름',
]);
SwooleRuntime::enableCoroutine();
go(function() 사용 ($server) {
$result = $server->query('SELECT * FROM table1');
var_dump($result);
});
go(function() 사용 ($server) {
$result = $server->query('SELECT * FROM table2');
var_dump($result);
});
SwooleEvent::wait();
?>위 코드에서는 먼저 Swoole의 MySQL 객체를 생성하고 데이터베이스에 연결한 다음 go() 함수를 통해 코루틴을 시작하고 각각 두 개의 비동기 쿼리 작업을 수행한 다음 마지막으로 SwooleEvent::wait()를 사용하여 모든 코루틴이 완료될 때까지 기다립니다.
Workerman은 이벤트 중심 모델을 사용하여 네트워크 프로그래밍을 보다 유연하게 만드는 고성능 PHP 비동기 통신 프레임워크이기도 합니다. 비동기 IO 작업을 쉽게 구현할 수 있으며 높은 동시성 시나리오에 적합합니다.
<?php
require_once __DIR__ . '/vendor/autoload.php';
use WorkermanMySQLConnection;
$mysql = new Connection('127.0.0.1', '3306', 'username', 'password', 'dbname');
$worker = new Worker();
$worker-> onWorkerStart = function() 사용 ($mysql) {
$result = $mysql->query('SELECT * FROM table1');
var_dump($result);
$result = $mysql->query('SELECT * FROM table2');
var_dump($result);
};
작업자::runAll();
?>이 코드에서는 자동 로드를 통해 Workerman 프레임워크를 로드하고, MySQL 연결 객체를 생성하고, Worker 객체의 onWorkerStart 콜백에서 비동기 쿼리 작업을 수행하고, 마지막으로 Worker::runAll()을 통해 이벤트 루프를 시작합니다.
Swoole과 Workerman은 모두 PHP와 MySQL의 비동기 메시지 처리를 효율적으로 지원할 수 있습니다. 개발자는 빠르고 효율적인 비동기 데이터베이스 상호 작용을 달성하기 위해 프로젝트 요구 사항에 따라 적절한 프레임워크를 선택할 수 있습니다. 이 기사에 제공된 샘플 코드는 초보자가 비동기 메시지 처리 기술이 실제 애플리케이션에서 어떻게 구현되는지 더 잘 이해하는 데 도움이 되는 참조 자료로 사용될 수 있습니다.