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

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.
- 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
- 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
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
// 监控逻辑
$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. .
- 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!
Outils d'IA chauds
Undress AI Tool
Images de déshabillage gratuites
Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes
AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.
Clothoff.io
Dissolvant de vêtements AI
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 !
Article chaud
Outils chauds
Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit
SublimeText3 version chinoise
Version chinoise, très simple à utiliser
Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP
Dreamweaver CS6
Outils de développement Web visuel
SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)
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
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
Aug 07, 2025 pm 04:36 PM
TestThepdfinanotherApptodetermineIftheissueiswiththefileoredge.2.EnBlEthebuilt-inpdfViewerByTurningOff "AlwaysOpenpdffilesexternal" et "DownloadPdffiles" inedgestoSolver.
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
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
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
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
Aug 08, 2025 pm 04:16 PM
RunThewindowsUpDateTroulesshooTervAyingSettings> Update & Security> TroubleshoottoAutomAticyFixComMonissues.2.ResetwindowsupDateComponentsBystoppingrelatedServices, RenamingtheSoftwaredSistributeandCatroot2folders, TherestartingTheServicestoClelele


