現在の位置: ホーム> 最新記事一覧> Swoole と Workerman: PHP と MySQL を使用した非同期メッセージ処理の実践ガイド

Swoole と Workerman: PHP と MySQL を使用した非同期メッセージ処理の実践ガイド

M66 2025-10-30

PHP の Swoole と Workerman の非同期メッセージ処理機能

Swoole と Workerman は、PHP 分野で人気のある 2 つの非同期ネットワーク フレームワークであり、MySQL データベースと対話する際のパフォーマンスを大幅に向上させることができます。この記事では、非同期メッセージ処理の観点から開始し、両方の使用法を詳しく紹介し、実用的なコード例を示します。

Swoole の非同期メッセージ処理機能

Swoole は実稼働環境用の非同期ネットワーク通信エンジンであり、コルーチン テクノロジを使用して高性能の非同期 IO 操作を実現します。 MySQL プロトコルのサポートが組み込まれているため、開発者は非同期メソッドを直接使用してデータベース操作を実行できるため、クエリ効率が大幅に向上します。

サンプルコード: Swoole 非同期 MySQL クエリ

<?php
$server = new SwooleCoroutineMySQL();
$server->接続する([
    &#39;ホスト&#39; => &#39;127.0.0.1&#39;,
    「ポート」 => 3306、
    &#39;ユーザー&#39; => &#39;ユーザー名前&#39;,
    「パスワード」 => 「パスワード」、
    &#39;データベース&#39; => &#39;データベース名前&#39;,
]);

SwooleRuntime::enableCoroutine();

go(function() use ($server) {
    $result = $server->query(&#39;SELECT * FROM table1&#39;);
    var_dump($result);
});

go(function() use ($server) {
    $result = $server->query(&#39;SELECT * FROM table2&#39;);
    var_dump($result);
});

SwooleEvent::wait();
?>

上記のコードでは、まず Swoole の MySQL オブジェクトを作成してデータベースに接続し、次に go() 関数を通じてコルーチンを開始し、2 つの非同期クエリ操作をそれぞれ実行し、最後に SwooleEvent::wait() を使用してすべてのコルーチンが完了するのを待ちます。

Workerman の非同期メッセージ処理機能

Workerman は、イベント駆動型モデルを使用してネットワーク プログラミングをより柔軟にする、高性能の PHP 非同期通信フレームワークでもあります。非同期 IO 操作を簡単に実装でき、同時実行性の高いシナリオに適しています。

サンプルコード: Workerman 非同期 MySQL クエリ

<?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() use ($mysql) {
    $result = $mysql->query(&#39;SELECT * FROM table1&#39;);
    var_dump($result);

    $result = $mysql->query(&#39;SELECT * FROM table2&#39;);
    var_dump($result);
};

Worker::runAll();
?>

このコードでは、自動ロードを通じて Workerman フレームワークをロードし、MySQL 接続オブジェクトを作成し、Worker オブジェクトの onWorkerStart コールバックで非同期クエリ操作を実行し、最後に Worker::runAll() を通じてイベント ループを開始します。

要約する

Swoole と Workerman はどちらも、PHP と MySQL の非同期メッセージ処理を効率的にサポートできます。開発者は、プロジェクトのニーズに基づいて適切なフレームワークを選択し、高速かつ効率的な非同期データベース対話を実現できます。この記事で提供されているサンプル コードは、初心者が非同期メッセージ処理テクノロジが実際のアプリケーションでどのように実装されているかをより深く理解するのに役立つリファレンスとして使用できます。