Maison > développement back-end > tutoriel php > Comment fonctionne l'interrogation longue et comment peut-elle être implémentée à l'aide d'Apache, PHP et Javascript ?

Comment fonctionne l'interrogation longue et comment peut-elle être implémentée à l'aide d'Apache, PHP et Javascript ?

Linda Hamilton
Libérer: 2024-12-26 16:46:15
original
580 Les gens l'ont consulté

How Does Long Polling Work and How Can It Be Implemented Using Apache, PHP, and Javascript?

Mise en œuvre de l'interrogation longue de base : un guide simple

L'interrogation longue est une technique utilisée pour permettre au serveur de transmettre des données au client sans que le client le demande explicitement. Ceci est utile dans les scénarios où le serveur doit surveiller en permanence les données et avertir le client lorsque de nouvelles données arrivent.

Comment fonctionne l'interrogation longue ?

Dans l'interrogation longue, le client fait une requête au serveur et attend une réponse. Si aucune donnée n'est disponible, le serveur maintient la requête ouverte indéfiniment, au lieu de la fermer comme dans une requête HTTP classique. Lorsque de nouvelles données deviennent disponibles, le serveur les envoie au client et ferme la requête.

Implémentation d'une interrogation longue dans Apache et PHP

Pour implémenter une interrogation longue à l'aide d'Apache et PHP :

  1. Créer un script PHP (msgsrv.php) : Ce script traitera la demande du client et enverra une réponse lorsque les données seront disponibles.
  2. Configurez Apache pour qu'il serve le script PHP : Configurez votre serveur Apache pour gérer les requêtes adressées à msgsrv.php.

Implémentation côté client à l'aide de Javascript

Pour implémenter une interrogation longue côté client à l'aide Javascript :

  1. Créer une première requête au serveur : Le client fait une requête à msgsrv.php et attend une réponse.
  2. Gérer réponses réussies : Si une réponse est reçue, ajoutez-la à un élément désigné sur la page et déclenchez une nouvelle demande après un retard.
  3. Gérer les erreurs : Si la demande échoue, affichez un message d'erreur et réessayez après un délai plus long.

Exemple de code

Script PHP (msgsrv.php):

if (rand(1, 3) == 1) {
    // Fake an error
    header("HTTP/1.0 404 Not Found");
    die();
}

// Send a string after a random number of seconds (2-10)
sleep(rand(2, 10));
echo("Hi! Have a random number: " . rand(1, 10));
Copier après la connexion

Code Javascript (long_poller.htm):

<script type="text/javascript">
function waitForMsg() {
    $.ajax({
        type: "GET",
        url: "msgsrv.php",
        async: true,
        cache: false,
        timeout: 50000,

        success: function (data) {
            // Add response to a .msg div (with the "new" class)
            addmsg("new", data);
            setTimeout(waitForMsg, 1000); // Request next message after 1 second
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            // Add error message
            addmsg("error", textStatus + " (" + errorThrown + ")");
            setTimeout(waitForMsg, 15000); // Retry after 15 seconds
        }
    });
};

$(document).ready(function () {
    waitForMsg(); // Start the initial request
});
</script>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal