ホームページ >バックエンド開発 >PHPチュートリアル >PHP の Swoole 拡張機能を使用するにはどうすればよいですか?

PHP の Swoole 拡張機能を使用するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-06-02 20:21:012192ブラウズ

PHP の Swoole 拡張機能は、高性能の非同期ネットワーク通信フレームワークです。 TCP、UDP、Unix ソケットなどのプロトコルに基づいて Web サーバーおよびクライアント アプリケーションを構築するために使用できます。 Swoole 拡張機能は現在、ゲームサーバー、チャットアプリケーション、リアルタイムデータプッシュなどの分野で広く使用されています。この記事ではPHPの拡張機能Swooleの使い方を紹介します。

1. Swoole 拡張機能をインストールする

Swoole 拡張機能を使用する前に、まず拡張機能をインストールする必要があります。以下の2通りの方法でインストールできます。

  1. pecl コマンドを使用してインストールします:
pecl install swoole
  1. 手動でコンパイルしてインストールします:

GitHub からソース コードをダウンロードしますSwoole 拡張機能のリポジトリ:

git clone https://github.com/swoole/swoole-src.git

ソース コードを抽出してディレクトリに移動します:

tar -zxvf swoole-src.tar.gz
cd swoole-src

次のコマンドを実行します:

phpize
./configure
make
make install

2. Swoole 拡張機能を使用します

  1. TCP サーバーを開始します

以下は、単純な TCP サーバーを開始するコード例です。

$server = new SwooleServer("127.0.0.1", 9501);

//监听连接进入事件
$server->on('connect', function ($server, $fd) {
    echo "Client: {$fd} Connect.
";
});

//监听数据接收事件
$server->on('receive', function ($server, $fd, $from_id, $data) {
    $server->send($fd, "Server: {$data}");
});

//监听连接关闭事件
$server->on('close', function ($server, $fd) {
    echo "Client: {$fd} Close.
";
});

//启动服务器
$server->start();

上記のコードでは、リッスンする TCP サーバーを作成しました。 127.0.0.1 のポート 9501。クライアントが接続を確立すると接続エントリ イベントがトリガーされ、サーバーがデータを受信するとデータ受信イベントがトリガーされ、受信したデータはそのままクライアントに送信されます。クライアントが接続を閉じると、接続終了イベントがトリガーされます。

  1. WebSocket サーバーの開始

以下は、単純な WebSocket サーバーを開始するコード例です:

$server = new SwooleWebSocketServer("127.0.0.1", 9501);

//监听WebSocket连接打开事件
$server->on('open', function ($server, $request) {
    echo "Client: {$request->fd} Connect.
";
});

//监听WebSocket消息事件
$server->on('message', function ($server, $frame) {
    $server->push($frame->fd, "Server: {$frame->data}");
});

//监听WebSocket连接关闭事件
$server->on('close', function ($server, $fd) {
    echo "Client: {$fd} Close.
";
});

//启动服务器
$server->start();

上記のコードでは、WebSocket を作成します。サーバー、127.0.0.1 のポート 9501 でリッスンします。 WebSocket クライアントがサーバーに接続すると、接続オープン イベントがトリガーされます。 WebSocket クライアントがサーバーにメッセージを送信すると、メッセージ イベントがトリガーされ、受信したメッセージがそのままクライアントに送り返されます。 WebSocket クライアントが接続を閉じると、接続終了イベントがトリガーされます。

  1. 非同期 HTTP リクエストを送信する

以下は、非同期 HTTP リクエストを送信するコード例です。

$client = new SwooleCoroutineHttpClient('www.baidu.com', 80);
$client->set(['timeout' => 1]);
$client->setHeaders([
    'Host' => "www.baidu.com",
    "User-Agent" => 'Chrome/49.0.2587.3',
    'Accept' => 'text/html,application/xhtml+xml,application/xml',
    'Accept-Encoding' => 'gzip',
]);
$client->set(['timeout' => 1]);
$client->get('/index.php');
echo $client->body;

上記のコードでは、 HTTP クライアントは、www.baidu.com の /index.php パスに GET リクエストを非同期で送信し、応答を取得して、応答コンテンツを出力します。

概要:

この記事では、PHP の拡張機能 Swoole の使い方を紹介します。 Swoole 拡張機能により、高性能な非同期ネットワーク通信を実現し、さまざまな共通ネットワーク アプリケーションを構築できます。 Swoole 拡張機能には PHP7 以降が必要であることに注意してください。また、Swoole 拡張機能を使用する場合は、アプリケーションの安定性に影響を与えないように、その高い同時実行特性に注意する必要があります。

以上がPHP の Swoole 拡張機能を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。