Maison >développement back-end >tutoriel php >Comment créer des applications basées sur des événements en utilisant PHP

Comment créer des applications basées sur des événements en utilisant PHP

PHPz
PHPzoriginal
2024-05-04 14:24:02653parcourir

Les moyens de créer des applications basées sur des événements en PHP incluent l'utilisation de l'API EventSource pour créer une source d'événements et l'utilisation d'un objet EventSource pour écouter les événements côté client. Envoyez des événements à l'aide de Server Sent Events (SSE) et écoutez les événements côté client à l'aide de l'objet XMLHttpRequest. Un exemple pratique consiste à utiliser EventSource dans un site Web de commerce électronique pour mettre à jour les inventaires en temps réel. Ceci est réalisé côté serveur en modifiant l'inventaire de manière aléatoire et en envoyant des mises à jour, et le client écoute les mises à jour d'inventaire via EventSource et les affiche dans. temps réel.

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

Comment créer des applications basées sur des événements en utilisant PHP

Dans le développement Web moderne, les applications basées sur des événements deviennent de plus en plus populaires. Ils permettent aux développeurs de créer des applications qui répondent aux interactions des utilisateurs, aux événements du serveur et à d'autres déclencheurs. PHP, en tant que langage de programmation côté serveur populaire, offre un support puissant pour la création d'applications basées sur des événements.

EventSource API

PHP fournit l'API EventSource, qui permet au navigateur d'établir une connexion persistante avec le serveur et de recevoir des données lorsqu'un événement se produit côté serveur.

Pour utiliser un EventSource, vous devez d'abord créer la source d'événement côté serveur :

<?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);
}
?>

Cela créera une source d'événement qui envoie un numéro au client chaque seconde.

Utilisation d'EventSource côté client

Ensuite, vous pouvez utiliser EventSource côté client pour écouter la source de l'événement :

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

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

Cela créera une instance EventSource et écoutera les événements du serveur. Lorsque le serveur envoie des données, elles sont imprimées sur la console.

Événements envoyés par le serveur basés sur Push (SSE)

SSE est une autre méthode de création d'applications basées sur des événements qui fournit des fonctionnalités similaires à EventSource. Pour utiliser SSE, vous devez d'abord envoyer une réponse à l'événement côté serveur en utilisant 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);
}
?>

Cela enverra un événement côté serveur chaque seconde.

Utilisation de SSE côté client

Vous pouvez écouter les événements SSE côté client à l'aide de XMLHttpRequest (XHR) :

var xhr = new XMLHttpRequest();

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

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

Cela ouvrira une requête GET au point de terminaison SSE et imprimera les données lorsque l'événement est reçu. .

Cas pratique : mises à jour des stocks en temps réel

Considérons un site Web de commerce électronique avec des inventaires en temps réel. À l'aide d'applications basées sur des événements, les sites Web peuvent envoyer des mises à jour aux clients lorsque les stocks changent.

Côté serveur, vous pouvez utiliser PHP pour créer une source d'événements et envoyer des mises à jour lorsque l'inventaire change :

<?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);
}
?>

Côté client, vous pouvez utiliser EventSource pour écouter les mises à jour d'inventaire :

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

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

Cela mettra à jour le l'inventaire de la page en temps réel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn