近年、WebSocket テクノロジはインターネット開発、特にリアルタイム通信、オンライン ゲーム、プッシュ メッセージなどの分野でますます普及しています。高性能の非同期 PHP 拡張機能である Swoole は、開発者が高性能の WebSocket サーバーを簡単に構築できるように支援します。この記事では、Swooleを使って高性能なWebSocketサーバーを構築する方法を紹介します。
1. Swoole のインストール
Swoole は PHP 5.3 ~ 7.4 バージョンをサポートしており、pecl またはソース コードを通じてインストールできます。以下はソース コードのインストールを例にしています。
最初に Swoole インストール パッケージをダウンロードし、それをディレクトリに解凍して次のコマンドを実行します。
phpize ./configure make make install
インストールが完了したら、 Swoole 拡張機能を有効にするには、php.ini に次の設定項目を追加します。
extension=swoole
インストールが完了したら、php --ri swoole
コマンドを使用して、Swoole の基本情報を照会します。
2. WebSocket サーバーの作成
単純な WebSocket サーバーを構築しましょう。まず、プロジェクトのルート ディレクトリにserver.php ファイルを作成し、次のコードを入力します。
<?php $server = new swoole_websocket_server("0.0.0.0", 9502); $server->on("open", function (swoole_websocket_server $server, swoole_http_request $request) { echo "client {$request->fd} connected "; }); $server->on("message", function (swoole_websocket_server $server, $frame) { echo "received message: {$frame->data} "; }); $server->on("close", function (swoole_websocket_server $server, $fd) { echo "client {$fd} closed "; }); $server->start();
上記のコードでは、最初に swoole_websocket_server インスタンスを作成し、リスニング アドレスを 0.0.0.0 に、ポートを 9502 に設定しました。 。その後、open、message、close の 3 つのイベントがそれぞれ監視され、クライアント接続の確立、メッセージの受信、接続の終了時に、対応するイベント処理関数がトリガーされます。
次に、コンソールで次のコマンドを実行して WebSocket サーバーを起動します:
php server.php
すべてが正常であれば、次のような出力が表示されます:
2019-06-17 10:51:17|INFO|Server Start: 0.0.0.0:9502
3 WebSocket サーバーをテストする
WebSocket サーバーを起動した後、Firefox の Simple WebSocket クライアント プラグインや Chrome の WebSocket クライアント プラグインなど、フロントエンド開発者が一般的に使用する WebSocket プラグイン ツールを使用して、サーバーが適切に動作しているかどうかをテストします。
Firefox Simple WebSocket クライアントを例として、プラグインを開いた後、「ws://127.0.0.1:9502」と入力し、「接続」ボタンをクリックします。このとき、サーバー コンソールに「client 1 Connected」というログが出力され、WebSocket クライアントがサーバーに正常に接続されたことがわかります。
プラグインの送信領域にテスト内容を入力できます。たとえば、「hello」と入力して送信ボタンをクリックすると、対応する「受信メッセージ: hello」のログが表示されます。サーバーが正常に受信したことを示すコンソール WebSocket クライアントによって送信されたメッセージ。
4. パフォーマンスの向上
大規模なトラフィックのシナリオでは、WebSocket サーバーのパフォーマンスが非常に重要です。 Swoole は、WebSocket サーバーのパフォーマンスを向上させるための複数のメカニズムを提供します。
- コルーチンを開く
コード内で SwooleCoroutineun
関数を呼び出してコルーチンを開くと、複数のコルーチンを同時に実行でき、サーバーのパフォーマンスが向上します。パフォーマンス、スループット。
たとえば、server.php のコードを変更します。
<?php use SwooleCoroutine; Coun(function () { $server = new swoole_websocket_server("0.0.0.0", 9502); $server->on("open", function (swoole_websocket_server $server, swoole_http_request $request) { echo "client {$request->fd} connected "; }); $server->on("message", function (swoole_websocket_server $server, $frame) { echo "received message: {$frame->data} "; }); $server->on("close", function (swoole_websocket_server $server, $fd) { echo "client {$fd} closed "; }); $server->start(); });
- ワーカー数を設定します
サーバーの起動時に、ワーカー数を設定できます。ワーカーの数: サーバーの同時処理能力を向上させます。ワーカーの数は次の方法で設定できます。
$server->set([ 'worker_num' => 4, // 工作进程数量 ]);
コルーチンでは、run 関数内でワーカーの数を設定する必要があります。
- 非同期 MySQL を使用する
WebSocket サーバーがデータベースを操作する必要がある場合は、Swoole の非同期 MySQL クライアントを使用してデータベース操作によるブロックを回避し、サーバーのパフォーマンスを向上させることができます。 。
たとえば、Swoole 非同期 MySQL クライアントを使用してレコードを取得するサンプル コードは次のとおりです。
$db = new SwooleCoroutineMySQL(); $db->connect([ 'host' => 'localhost', 'port' => 3306, 'user' => 'root', 'password' => '', 'database' => 'test', ]); $res = $db->query('SELECT * FROM users WHERE id = 1');
上記は、Swoole を使用して高パフォーマンスのサーバーを構築する方法の基本的なプロセスです。 WebSocketサーバー。 Swoole が提供する非同期サポート、マルチプロセス、コルーチン、およびその他の利点を使用することで、WebSocket サーバーのパフォーマンスが大幅に向上し、アプリケーションの安定性と効率性が向上します。
以上がSwoole を使用して高性能 WebSocket サーバーを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、バグの報告、機能の送信、コーディング、ドキュメントの改善など、スウールプロジェクトに貢献する方法の概要を説明しています。それは、初心者が貢献を開始するために必要なスキルとステップについて議論し、プレスを見つける方法は

記事では、スウールをカスタムモジュールで拡張し、手順を詳細に、ベストプラクティスを詳細にし、トラブルシューティングで説明します。主な焦点は、機能と統合を強化することです。

この記事では、高性能アプリケーション用のPHPでSwooleの非同期I/O機能を使用することについて説明します。インストール、サーバーのセットアップ、および最適化戦略をカバーします。ワードカウント:159

記事では、Swooleのプロセス分離の構成、安定性とセキュリティの改善などの利点、トラブルシューティング方法について説明します。

Swooleの原子炉モデルは、イベント駆動型の非ブロッキングI/Oアーキテクチャを使用して、高電流シナリオを効率的に管理し、さまざまなテクニックを通じてパフォーマンスを最適化します。(159文字)

記事では、PHPフレームワークであるSwooleの接続問題のトラブルシューティング、原因、監視、および予防について説明します。

この記事では、Swooleのパフォーマンスを監視および最適化するためのツールとベストプラクティス、およびパフォーマンスの問題の方法のトラブルシューティングについて説明します。

要約:この記事では、不適切なリソース管理や管理されていないコルーチンなどの一般的な原因を強調し、識別、分離、修正を通じて、スウールアプリケーションのメモリリークの解決について説明します。 Swoole TrackerやValgrindなどのツール


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版
中国語版、とても使いやすい

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
