インターネットの急速な発展と Web テクノロジーの継続的な更新に伴い、リアルタイム通信機能を実現するために WebSocket テクノロジーを使用する Web アプリケーションがますます増えています。最も一般的に使用される Web 開発言語の 1 つである PHP は、WebSocket のサポートが常に限定的でした。ただし、PHP8.0 バージョンでは、いくつかの新しい変更が加えられています。その中で最も重要なのは、PHP 開発者に、より便利で効率的で信頼性の高いリアルタイム通信ソリューションを提供する新しい WebSocket ライブラリの正式な導入です。この記事では、PHP8.0のWebSocketライブラリについて詳しく紹介します。
1. WebSocket の概要
WebSocket は、Web ブラウザと Web サーバー間の双方向通信を実現するネットワーク技術です。接続が確立されると、ブラウザがリクエストを送信しなくても、サーバーはブラウザにデータをアクティブに送信できます。この特性により、WebSocket はリアルタイム通信、オンライン ゲーム、オンライン チャット、リモート デスクトップなどの分野で広く使用されています。
2. PHP WebSocket ライブラリの歴史
PHP が生まれる前には、PHPoole の php-websocket、Ratchet、ReactPHP、Swoole など、多くの優れた WebSocket ライブラリが誕生しました。これらのライブラリは強力ですが、サードパーティ製であるため、PHP によって正式にサポートおよび保守することができず、使用中に互換性、安定性、セキュリティの問題が発生する可能性があります。
したがって、PHP の Web 開発エコシステムをさらに改善するために、PHP バージョン 7.2 では新しい拡張機能 ext-sockets が導入されました。この拡張機能は生のソケットのサポートを提供し、PHP 開発者がソケットベースの通信を簡単に実装できるようにします。ただし、HTTP プロトコルを手動で処理する必要があることや、接続の切断を検出できないことなど、いくつかの制限があるため、実際のアプリケーションで使用するには依然として一定の困難があります。
最後に、PHP8.0 バージョンでは、PHP は新しい WebSocket ライブラリである ext-sockets アップグレード バージョンを正式に導入しました。この新しいライブラリは、拡張機能の制限を修正し、より多くの機能を追加することで、より優れた WebScoket サポートを提供します。
3. PHP8.0 の新機能
PHP8.0 の新しい WebSocket ライブラリ (ext-sockets2 という名前) では、主に次の機能が追加されます。 RFC 6455 標準に準拠した WebSocket プロトコル
HTTP ハンドシェイク リクエストを自動的に解析する
バイナリ データのサポート
PING/PONG のサポート
接続の終了のサポート
pecl install sockets拡張機能のインストールが完了したら、次の拡張機能を php.ini ファイルに追加する必要があります。
extension=sockets拡張機能のインストールと構成が完了したら、WebSocket の使用を開始できます。 5. WebSocket ライブラリを使用して簡単なプログラムを作成するext-sockets2 を使用して簡単なプログラムを作成する方法を見てみましょう。このプログラムはクライアントからのメッセージをリッスンし、それに応答します。
<?php $address = '127.0.0.1'; $port = 8080; $server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_bind($server, $address, $port); socket_listen($server); while (true) { $client = socket_accept($server); while (true) { $input = socket_read($client, 1024); if (strlen($input) == 0) { socket_close($client); break; } echo $input . PHP_EOL; socket_write($client, $input); } }このプログラムでは、socket_create() を使用してソケット サーバーを作成し、socket_bind() を使用してそれを指定された IP アドレスとポートにバインドします。次に、socket_listen() を使用してクライアント接続の待機を開始します。最初の while ループはクライアントからのリクエストをリッスンするために使用され、2 番目の while ループは接続されたクライアントからのメッセージを処理するために使用されます。 プログラムでは、socket_read() を使用してクライアントから送信されたメッセージを受信し、socket_write() を使用してこれらのメッセージを応答としてクライアントに返します。 6. 概要WebSocket テクノロジは、インターネット アプリケーション開発でますます使用されています。 PHP8.0 バージョンでは、PHP によって正式に導入されたまったく新しい WebSocket ライブラリである ext-sockets2 も登場し、多くの新機能をもたらし、PHP 開発者が WebSocket を実装する際の利便性、効率性、信頼性が向上しました。古い WebSocket ライブラリと新しい WebSocket ライブラリのどちらかを選択する場合は、リアルタイム通信の増大するニーズにさらに適切に対応するために、新しい拡張機能を試したほうがよいでしょう。
以上がPHP8.0のWebSocketライブラリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。