HOWTO · PHP
PHP ソケット IO
このチュートリアルでは、PHP で socket.io を実装する方法を示します。
このページの内容
このチュートリアルでは、PHP で socket.io を実装する方法を示します。
PHP ソケット IO
socket.io ライブラリは、クライアントとサーバー間の双方向、低遅延、およびイベントベースの通信を可能にします。 公式の socket.io API は こちら にあり、Node.js を使用して実装されています。
socket.io は PHP で書かれていないため、PHP で直接実装されていません。 PHP の socket.io を実装する PHP の Elephant.io のような API を使用できます。
Elephant.io は PHP で書かれた大まかな WebSocket クライアントで、サーバーとクライアント間の通信を容易にします。 Elephant.io には、少なくとも PHP 5.4 と OpenSSL が必要です。
Elephant.io は MIT ライセンスの下でライセンスされています。 Elephant.io で使用される Elephant.io または Socket.io エンジンの組み込みエンジンは次のとおりです。
- Socket.io 5.x
- Socket.io 4.x
- Socket.io 3.x
- Socket.io 2.x
- ソケット.io 1.x
- Socket.io 0.x
エレファント IO のインストール方法
elephant.io は GitHub で提供されており、Composer を使用してインストールできます。 まず、PHP に Composer がインストールされていることを確認します。インストールされていない場合は、まず Composer をインストールし、以下の手順に従います。
-
このリンクにアクセスしてください。
-
ダウンロードオプションをクリックします。 -
Composer-Setup.exeファイルをダウンロードします。 -
Composer-Setup.exeファイルを実行します。 -
すべてのユーザーにインストールします。
-
php.exeファイルへのパスを選択します。次へをクリックします。 -
プロキシを選択せずに、[次へ] をクリックします。
-
次のページで
インストールをクリックします。 -
インストールが完了したら、
次へをクリックしてから完了をクリックします。
上記の手順により、Composer が Windows システムにインストールされ、cmd で composer コマンドを実行して確認できます。
次に、composer.phar を php コマンドで実行して elephant.io をインストールし、Composer.phar を現在のディレクトリにインストールする必要があります。 次のコマンドを使用します。
php -r "readfile('https://getcomposer.org/installer');" | php
このコマンドの出力は次のようになります。
C:\Users\Sheeraz>php -r "readfile('https://getcomposer.org/installer');" | php
All settings correct for using Composer
Downloading...
Composer (version 2.4.2) successfully installed to: C:\Apache24\htdocs\composer.phar
Use it: php composer.phar
C:\Apache24\htdocs>
Composer と Composer.phar がインストールされたら、Elephant.io をインストールしましょう。 次のコマンドを実行します。
php composer.phar require elephantio/elephant.io
上記のコマンドは elephant.io をインストールし、バージョンの非互換性エラーがスローされる場合は、次のコマンドを使用して composer から直接インストールします。
composer require elephantio/elephant.io:*
Elephant IO インストールの出力は次のようになります。
Elephant IO パッケージがインストールされると、それを使用してソケット サーバーと通信できます。 ここに例があります。
<?php
require( __DIR__ . '/elephantio/elephant.io/lib/ElephantIO/Client.php');
use ElephantIO\Client as ElephantIOClient;
$Elephant_Client = new ElephantIOClient('http://localhost:8000', 'socket.io', 1, false, true, true);
$Elephant_Client->init();
$Elephant_Client->emit('action', 'delftstack');
$Elephant_Client->close();
echo 'trying to send `delftstack` to the event named action';
?>
このコードを実行する前に、ポート 8000 でサーバーを起動する必要がある場合があります。cmd で次のコマンドを実行します。
php -S localhost:8000
上記のコードは、ソケット サーバーと通信して、データ delftstack を action という名前のイベントに送信します。 上記のコードの出力は次のとおりです。
trying to send `foo' to the event called action
通信に 30 秒以上かかる場合、コードは次のような致命的なエラーをスローします。
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Apache24\htdocs\vendor\elephantio\elephant.io\lib\ElephantIO\Client.php on line 326
Elephant.io にはドキュメントは含まれていませんが、ソケット サーバー通信を理解できるいくつかの例が提供されています。 例は ここ にあります。