Maison cadre php Workerman Comment utiliser Workerman pour mettre en œuvre un système de surveillance en temps réel

Comment utiliser Workerman pour mettre en œuvre un système de surveillance en temps réel

Nov 07, 2023 am 11:00 AM
programmation workerman Surveillance en temps réel

Comment utiliser Workerman pour mettre en œuvre un système de surveillance en temps réel

Avec le développement rapide d'Internet et la demande croissante de surveillance en temps réel, les systèmes de surveillance en temps réel basés sur le Web deviennent de plus en plus populaires. Cet article explique comment utiliser Workerman pour mettre en œuvre un système de surveillance en temps réel. Le système peut surveiller plusieurs types de données selon les besoins, tels que les journaux, les indicateurs de performance, l'état de la machine, etc. Il fournit également des fonctions d'alarme en temps réel pour aider les administrateurs. saisir l'état de fonctionnement du système en temps opportun.

Workerman est un framework de serveur TCP/UDP hautes performances écrit en PHP pur, qui présente les caractéristiques d'une concurrence élevée, d'une faible latence et d'une expansion facile. Grâce à Workerman, vous pouvez facilement implémenter certains scénarios d'applications hautes performances et à haute concurrence, tels que des services de liaison longue, des salons de discussion, des serveurs de jeux en ligne, etc. Ci-dessous, nous expliquerons comment utiliser Workerman pour mettre en œuvre un système de surveillance en temps réel.

  1. Créer une application Workerman

Avant d'utiliser Workerman, vous devez télécharger et installer le framework. Ici, nous prenons l'environnement Linux comme exemple et utilisons composer pour l'installer. Entrez la commande suivante dans le terminal pour installer Workerman :

composer require workerman/workerman

Une fois l'installation terminée, nous pouvons créer notre première application Workerman en créant un fichier PHP.

require_once DIR . '/vendor/autoload.php';

// Créez un Worker pour écouter le port 2345 et communiquer en utilisant le protocole websocket
$ws_worker = new WorkermanWorker("websocket:/ /0.0.0.0:2345");

// Démarrez 4 processus pour fournir des services au monde extérieur
$ws_worker->count = 4;

// Lorsque le client se connecte avec succès, envoyez un message de bienvenue
$ws_worker ->onConnect = function ($connection) {

$connection->send('Welcome to workerman!');

};

// Lorsque le client envoie des données, traitez-les
$ws_worker->onMessage = function ($connection, $data) {

// 把收到的消息回显给客户端
$connection->send($data);

};

// Lorsque Lorsque le client se déconnecte, traitez-le
$ws_worker->onClose = function ($connection) {

echo "Connection closed

";
};

// Run Worker
WorkermanWorker::run();

dans ce qui précède Dans le code, nous avons créé un Worker pour écouter le port 2345 et communiquer en utilisant le protocole websocket. Lorsque le client se connecte avec succès, un message de bienvenue sera envoyé lorsque le client enverra des données, les données reçues seront répercutées sur le client. client ; Lorsque le client se déconnecte, un message indiquant que la connexion est fermée sera affiché. Enfin, démarrez Worker pour l'exécuter

  1. Implémentez la fonction de surveillance en temps réel

Nous avons maintenant créé avec succès une application Workerman, mais ceci. ne répond pas à nos besoins en matière de surveillance en temps réel. Ensuite, nous présenterons comment utiliser Workerman pour mettre en œuvre la fonction de surveillance en temps réel. Nous devons d'abord clarifier les données que notre système de surveillance en temps réel doit surveiller. logs à titre d'exemple.

Notre système de surveillance en temps réel. Nous devons surveiller les journaux générés dans le système d'entreprise et les transmettre au front-end pour les afficher en temps réel. Fonction de rappel onMessage de Worker, puis envoyez le contenu du journal au front-end en temps réel :

require_once

DIR

'/vendor/autoload.php';use WorkermanLibTimer;use WorkermanWorker;

$ws_worker = new Worker. ("websocket://0.0.0.0:2345");

$ws_worker-> count = 4;

$log_dir = '/path/to/log-dir/';

$monitor_interval = 1; Intervalle de temps de surveillance des fichiers journaux, unité : secondes


$ws_worker->onMessage = function ( $connection, $data) use($log_dir) {

// do something

};

$ws_worker->onClose = function ($ connexion) {

echo "Connection closed

";

};


// Surveiller les fichiers journaux

Timer: :add($monitor_interval, function () use($ws_worker, $log_dir) {

if (!is_dir($log_dir)) {
    return;
}
$files = scandir($log_dir);
foreach ($files as $file) {
    if ($file == "." || $file == "..") {
        continue;
    }
    $filename = $log_dir . '/' . $file;
    if (is_file($filename)) {
        $fp = fopen($filename, 'r');
        $lastpos = $ws_worker->lastpos[$filename] ?? 0;
        fseek($fp, $lastpos);
        $data = fread($fp, filesize($filename) - $lastpos);
        fclose($fp);
        if (!empty($data)) {
            // 实时推送日志信息到前端
            foreach($ws_worker->connections as $con){
                if ($con->websocket) {
                    $con->send(json_encode(array(
                        'type' => 'log',
                        'data' => $data,
                        'filename' => $filename
                    )));
                }
            }
            // 更新上次读取位置
            $ws_worker->lastpos[$filename] = ftell($fp);
        }
    }
}

});

Workerman fournit le Classe Timer, qui peut déclencher une fonction de rappel régulièrement. Nous pouvons l'utiliser pour surveiller régulièrement le répertoire des journaux. Lors de la lecture du contenu du journal, vous devez faire attention à la dernière position de lecture pour éviter de lire le contenu à la même position à plusieurs reprises. Après avoir lu le contenu du journal, poussez-le vers le front-end pour l'afficher en temps réel.

2.2 Réalisation de la fonction d'alarme en temps réel

Dans le système de surveillance en temps réel, la fonction d'alarme en temps réel est également un élément essentiel. Nous pouvons envoyer des informations d'alarme au frontal en temps réel lorsque des événements d'alarme détectés par la surveillance se produisent. Voici un exemple de code pour la fonction d'alerte :

require_once

DIR

'/vendor/autoload.php';use WorkermanLibTimer;use WorkermanWorker;

$ws_worker = new Worker("websocket://0.0. 0.0:2345 ");

$ws_worker->count = 4;

$alarm_interval = 1; // Intervalle de temps de surveillance des événements d'alarme, unité : secondes

$ws_worker->onMessage = function ($connection, $data) {

// do something

};

$ws_worker->onClose = function ($connection) {

echo "Connection closed

";

};


// Surveiller les événements d'alarme

Timer::add($alarm_interval, function ( ) use( $ws_worker) {

// 监控逻辑
$alarm_type = 'warning'; // 告警类型
$alarm_data = 'alarm data'; // 告警数据
if ($alarm_type && $alarm_data) {
    // 实时推送告警信息到前端
    foreach($ws_worker->connections as $con){
        if ($con->websocket) {
            $con->send(json_encode(array(
                'type' => 'alarm',
                'data' => $alarm_data,
                'alarm_type' => $alarm_type
            )));
        }
    }
}

});

Surveillez régulièrement les événements d'alarme et la logique de surveillance est mise en œuvre en fonction des besoins spécifiques de l'entreprise. Lorsqu'un événement d'alarme se produit, les informations d'alarme sont transmises au front-end en temps réel. .

  1. Résumé

L'utilisation de Workerman pour mettre en œuvre un système de surveillance en temps réel peut nous aider à comprendre l'état de fonctionnement du système en temps réel et à améliorer l'efficacité et la précision de l'exploitation et de la maintenance du système. Cet article explique comment utiliser Workerman pour implémenter des fonctions de surveillance des journaux et d'alarme en temps réel dans le système de surveillance, et fournit également des exemples de code correspondants. Grâce à ces fondations, nous pouvons nous développer en conséquence en fonction des besoins spécifiques de l'entreprise et compléter un système de surveillance en temps réel plus complet.

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 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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1528
276
Passez l'exemple de l'exemple de journalisation du middleware http Passez l'exemple de l'exemple de journalisation du middleware http Aug 03, 2025 am 11:35 AM

HTTP Log Middleware dans GO peut enregistrer les méthodes de demande, les chemins de requête, la propriété intellectuelle du client et le temps qui prend du temps. 1. Utilisez http.handlerfunc pour envelopper le processeur, 2. Enregistrez l'heure de début et l'heure de fin avant et après l'appel Suivant.Servehttp, 3. Obtenez le vrai client IP via R.RemoteAddr et X-Forwared-For Headers, 4. Utilisez le log.printf aux journaux de demande de sortie, 5. L'exemple de code complet a été vérifié pour s'exécuter et convient au démarrage d'un projet petit et moyen. Les suggestions d'extension incluent la capture des codes d'état, la prise en charge des journaux JSON et le suivi des ID de demande.

Les touches de volume sur le clavier ne fonctionnent pas Les touches de volume sur le clavier ne fonctionnent pas Aug 05, 2025 pm 01:54 PM

Tout d'abord, CheckifThefnKeySettingisInterferingyTryingBothThevolumeKeyAlonEndfn volumeKey, thentogglefnlockwithfn espifavailable.2.enterbios / uefidUringbootAnableFunctionKeysordiSablehotKeyModetoenSureVolumeSarereCognined.3.updateorreinstallAdriodriving

La visionneuse PDF Edge ne fonctionne pas La visionneuse PDF Edge ne fonctionne pas Aug 07, 2025 pm 04:36 PM

TestThepdfinanotherApptodetermineIftheissueiswiththefileoredge.2.EnBlEthebuilt-inpdfViewerByTurningOff "AlwaysOpenpdffilesexternal" et "DownloadPdffiles" inedgestoSolver.

Python pour l'ingénierie des données etl Python pour l'ingénierie des données etl Aug 02, 2025 am 08:48 AM

Python est un outil efficace pour implémenter les processus ETL. 1. Extraction des données: les données peuvent être extraites des bases de données, des API, des fichiers et d'autres sources via des pandas, sqlalchemy, demandes et autres bibliothèques; 2. Conversion des données: utilisez des pandas pour le nettoyage, la conversion de type, l'association, l'agrégation et d'autres opérations pour assurer la qualité des données et optimiser les performances; 3. Chargement des données: utilisez la méthode Pandas To_SQL ou le SDK de la plate-forme cloud pour écrire des données sur le système cible, faire attention aux méthodes d'écriture et au traitement par lots; 4. Recommandations d'outils: Air Flow, Dagster, Prefect sont utilisés pour la planification et la gestion de processus, combinant des alarmes de journal et des environnements virtuels pour améliorer la stabilité et la maintenabilité.

Python Pandas Styling Dataframe Exemple Python Pandas Styling Dataframe Exemple Aug 04, 2025 pm 01:43 PM

L'utilisation de pandasstyling dans Jupyternotebook peut réaliser le bel affichage de DataFrame. 1. Utilisez Highlight_max et Highlight_min pour mettre en évidence la valeur maximale (vert) et la valeur minimale (rouge) de chaque colonne; 2. Ajouter la couleur d'arrière-plan du gradient (comme le blues ou les rouges) à la colonne numérique via background_gradient pour afficher visuellement la taille des données; 3. Fonction personnalisée Color_score combinée avec ApplyMap pour définir des couleurs de texte pour différents intervalles fractionnaires (≥90 vert, 80 ~ 89 orange, 60 ~ 79 rouge,

Types conditionnels avancés en dactylographie Types conditionnels avancés en dactylographie Aug 04, 2025 am 06:32 AM

Les types de conditions avancées de TypeScript implémentent le jugement logique entre les types via TextendU? X: Y Syntaxe. Ses capacités de base se reflètent dans les types de conditions distribuées, l'inférence de type inférieure et la construction d'outils de type complexe. 1. Le type conditionnel est distribué dans les paramètres de type nu et peut automatiquement diviser le type de joint, tel que pour obtenir la chaîne [] | nombre []. 2. Utiliser la distribution pour construire des outils de filtrage et d'extraction: exclut exclut les types via TextendU? Never: T, extraire extrait les points communs via TextendU? T: jamais, et des filtres non nuls nuls / non définis. 3

VS CODE Raccourci pour se concentrer sur le panneau Explorer VS CODE Raccourci pour se concentrer sur le panneau Explorer Aug 08, 2025 am 04:00 AM

Dans VSCODE, vous pouvez rapidement changer le panneau et la zone d'édition via des touches de raccourci. Pour sauter vers le panneau d'explorateur gauche, utilisez Ctrl Shift E (Windows / Linux) ou CMD Shift E (Mac); Retournez dans la zone d'édition pour utiliser Ctrl `ou ESC ou Ctrl 1 ~ 9. Par rapport au fonctionnement de la souris, les raccourcis clavier sont plus efficaces et n'interrompent pas le rythme de codage. Les autres conseils incluent: Ctrl KCTRL E FOCUS RECHERCH BOX, F2 Renommer Fichier, Supprimer le fichier, Entrez le fichier ouvert, le dossier de la touche Arrow Extend / Effondrement.

Correction: la mise à jour Windows n'a pas réussi à installer Correction: la mise à jour Windows n'a pas réussi à installer Aug 08, 2025 pm 04:16 PM

RunThewindowsUpDateTroulesshooTervAyingSettings> Update & Security> TroubleshoottoAutomAticyFixComMonissues.2.ResetwindowsupDateComponentsBystoppingrelatedServices, RenamingtheSoftwaredSistributeandCatroot2folders, TherestartingTheServicestoClelele

See all articles