Heim > Backend-Entwicklung > PHP-Tutorial > So erstellen Sie ereignisbasierte Anwendungen mit PHP

So erstellen Sie ereignisbasierte Anwendungen mit PHP

PHPz
Freigeben: 2024-05-04 14:24:02
Original
648 Leute haben es durchsucht

Möglichkeiten zum Erstellen ereignisbasierter Anwendungen in PHP umfassen die Verwendung der EventSource-API zum Erstellen einer Ereignisquelle und die Verwendung eines EventSource-Objekts zum Abhören von Ereignissen auf der Clientseite. Senden Sie Ereignisse mithilfe von Server Sent Events (SSE) und warten Sie auf der Clientseite mithilfe des XMLHttpRequest-Objekts auf Ereignisse. Ein praktisches Beispiel ist die Verwendung von EventSource auf einer E-Commerce-Website, um die Bestandszahlen in Echtzeit zu aktualisieren. Dies wird auf der Serverseite durch zufälliges Ändern des Bestands und Senden von Aktualisierungen erreicht, und der Client wartet über EventSource auf Bestandsaktualisierungen und zeigt diese an Echtzeit.

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

So erstellen Sie ereignisbasierte Anwendungen mit PHP

In der modernen Webentwicklung werden ereignisbasierte Anwendungen immer beliebter. Sie ermöglichen Entwicklern die Erstellung von Anwendungen, die auf Benutzerinteraktionen, Serverereignisse und andere Auslöser reagieren. PHP bietet als beliebte serverseitige Programmiersprache leistungsstarke Unterstützung für die Erstellung ereignisbasierter Anwendungen.

EventSource-API

PHP stellt die EventSource-API bereit, die es dem Browser ermöglicht, eine dauerhafte Verbindung mit dem Server herzustellen und Daten zu empfangen, wenn ein Ereignis auf der Serverseite auftritt.

Um eine EventSource zu verwenden, müssen Sie zunächst die Ereignisquelle auf der Serverseite erstellen:

<?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);
}
?>
Nach dem Login kopieren

Dadurch wird eine Ereignisquelle erstellt, die jede Sekunde eine Zahl an den Client sendet.

EventSource auf der Clientseite verwenden

Als nächstes können Sie EventSource auf der Clientseite verwenden, um die Ereignisquelle abzuhören:

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

source.onmessage = function(event) {
    console.log(event.data);
};
Nach dem Login kopieren

Dadurch wird eine EventSource-Instanz erstellt und auf Ereignisse vom Server überwacht. Wenn der Server Daten sendet, werden diese an die Konsole ausgegeben.

Push-basierte Server gesendete Ereignisse (SSE)

SSE ist eine weitere Methode zum Erstellen ereignisbasierter Anwendungen, die ähnliche Funktionen wie EventSource bietet. Um SSE zu verwenden, müssen Sie zunächst mit PHP eine Ereignisantwort auf der Serverseite senden:

<?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);
}
?>
Nach dem Login kopieren

Dadurch wird jede Sekunde ein serverseitiges Ereignis gesendet.

SSE auf der Clientseite verwenden

Sie können SSE-Ereignisse auf der Clientseite mit XMLHttpRequest (XHR) abhören:

var xhr = new XMLHttpRequest();

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

xhr.open('GET', '/sse', true);
xhr.send();
Nach dem Login kopieren

Dadurch wird eine GET-Anfrage an den SSE-Endpunkt geöffnet und die Daten gedruckt, wenn das Ereignis empfangen wird .

Praktischer Fall: Bestandsaktualisierungen in Echtzeit

Stellen Sie sich eine E-Commerce-Website mit Bestandszählungen in Echtzeit vor. Mithilfe ereignisbasierter Anwendungen können Websites Aktualisierungen an Kunden senden, wenn sich der Lagerbestand ändert.

Auf der Serverseite können Sie PHP verwenden, um eine Ereignisquelle zu erstellen und Aktualisierungen zu senden, wenn sich der Bestand ändert:

<?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);
}
?>
Nach dem Login kopieren

Auf der Clientseite können Sie die EventSource verwenden, um auf Bestandsaktualisierungen zu warten:

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

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

Dadurch wird der aktualisiert Bestandszählung der Seite in Echtzeit.

Das obige ist der detaillierte Inhalt vonSo erstellen Sie ereignisbasierte Anwendungen mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage