ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用してイベントベースのアプリケーションを構築する方法

PHP を使用してイベントベースのアプリケーションを構築する方法

PHPz
PHPzオリジナル
2024-05-04 14:24:02648ブラウズ

PHP でイベントベースのアプリケーションを構築する方法には、EventSource API を使用してイベント ソースを作成する方法と、クライアントで EventSource オブジェクトを使用してイベントをリッスンする方法が含まれます。 Server Sent Events (SSE) を使用してイベントを送信し、XMLHttpRequest オブジェクトを使用してクライアント側でイベントをリッスンします。実際の例は、電子商取引 Web サイトで EventSource を使用して在庫数をリアルタイムで更新することです。これは、サーバー側で在庫をランダムに変更して更新を送信することで実現され、クライアントは EventSource を通じて在庫の更新をリッスンし、それらを表示します。リアルタイム。

如何使用 PHP 构建基于事件的应用程序

PHP を使用してイベントベースのアプリケーションを構築する方法

現代の Web 開発では、イベントベースのアプリケーションがますます増えています。ますます人気が高まっています。これにより、開発者はユーザー インタラクション、サーバー イベント、その他のトリガーに応答するアプリケーションを作成できます。 PHP は、人気のあるサーバー側プログラミング言語として、イベントベースのアプリケーションの構築に強力なサポートを提供します。

EventSource API

PHP は EventSource API を提供します。これにより、ブラウザーはサーバーとの永続的な接続を確立し、サーバー側でイベントが発生したときにデータを受信できます。

EventSource を使用するには、まずサーバー側でイベント ソースを作成する必要があります。

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$count = 0;
while (true) {
    echo "data: {$count}\n\n";
    $count++;
    flush();
    sleep(1);
}
?>

これにより、クライアントに毎秒数値を送信するイベント ソースが作成されます。

クライアントで EventSource を使用する

次に、クライアントで EventSource を使用してイベント ソースをリッスンできます。

var source = new EventSource('/events');

source.onmessage = function(event) {
    console.log(event.data);
};

これにより、 EventSource インスタンスとサーバーからのイベントをリッスンします。サーバーがデータを送信すると、そのデータがコンソールに出力されます。

プッシュベースのサーバー送信イベント (SSE)

SSE は、関数を提供するイベントベースのアプリケーションを作成するためのもう 1 つの方法です。 SSE を使用するには、まず PHP を使用してサーバー側でイベント応答を送信する必要があります。

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

while (true) {
    $event = json_encode(['data' => 'some data']);
    echo "event: {$event}\n\n";
    flush();
    sleep(1);
}
?>

これにより、1 秒ごとに 1 つのサーバー側イベントが送信されます。

クライアントでの SSE の使用

クライアントで XMLHttpRequest (XHR) を使用して SSE イベントをリッスンできます:

var xhr = new XMLHttpRequest();

xhr.addEventListener('message', function(event) {
    console.log(event.data);
});

xhr.open('GET', '/sse', true);
xhr.send();

これにより、エンドポイントへの SSE GET リクエストにリンクし、イベントを受信したときにデータを出力します。

実際のケース: 在庫をリアルタイムで更新する

リアルタイムの在庫数を備えた電子商取引 Web サイトを考えてみましょう。イベントベースのアプリケーションを使用すると、Web サイトは在庫が変更されたときに顧客に更新情報を送信できます。

サーバー側では、PHP を使用してイベント ソースを作成し、インベントリが変更されたときに更新を送信できます。

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$stock = 100;

while (true) {
    // 随机更改库存
    $stock += rand(-10, 10);

    $event = json_encode(['stock' => $stock]);
    echo "event: {$event}\n\n";
    flush();
    sleep(1);
}
?>

クライアント側では、EventSource を使用してインベントリの更新をリッスンできます。 :

var source = new EventSource('/stock-updates');

source.onmessage = function(event) {
    var data = JSON.parse(event.data);
    document.getElementById('stock-count').innerHTML = data.stock;
};

これにより、ページの在庫数がリアルタイムで更新されます。

以上がPHP を使用してイベントベースのアプリケーションを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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