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 エンジンの組み込みエンジンは次のとおりです。

  1. Socket.io 5.x
  2. Socket.io 4.x
  3. Socket.io 3.x
  4. Socket.io 2.x
  5. ソケット.io 1.x
  6. 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 インストールの出力は次のようになります。

PHP エレファント 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 にはドキュメントは含まれていませんが、ソケット サーバー通信を理解できるいくつかの例が提供されています。 例は ここ にあります。