Maison  >  Article  >  développement back-end  >  Détection du rythme cardiaque en temps réel à l'aide de PHP et Keepalive

Détection du rythme cardiaque en temps réel à l'aide de PHP et Keepalive

WBOY
WBOYoriginal
2023-06-28 08:30:261918parcourir

Avec le développement de la technologie Internet, les systèmes informatiques doivent être constamment optimisés et améliorés pour garantir une haute disponibilité du système. Parmi eux, la détection des battements de cœur est une fonction très importante, utilisée pour détecter si le serveur est en ligne et si le réseau est normal. Dans cet article, nous présenterons comment implémenter la détection des battements cardiaques en temps réel à l'aide de PHP et Keepalive.

1. Introduction à Keepalive

Avant de présenter Keepalive, comprenons d'abord le processus de négociation à trois voies de TCP. L'établissement d'une connexion TCP nécessite une négociation à trois, c'est-à-dire que le client envoie un paquet SYN au serveur, le serveur envoie un paquet SYN+ACK après l'avoir reçu, et enfin le client envoie un paquet ACK, de sorte que le la connexion est établie avec succès.

Lorsque le client envoie une requête, si le serveur ne répond pas, le client pensera que la connexion a été déconnectée. Cependant, il arrive parfois que le serveur ne puisse pas répondre en raison de fluctuations du réseau ou d'un serveur occupé. À ce moment-là, la déconnexion affectera l'expérience utilisateur. Par conséquent, un mécanisme est nécessaire pour maintenir la connexion active, à savoir Keepalive.

Keepalive est un protocole réseau construit sur TCP qui détecte si une connexion est toujours active. Lorsqu'une connexion est inactive pendant un certain temps, Keepalive enverra un paquet de détection au serveur. Si le serveur ne répond toujours pas, il déterminera que la connexion a été déconnectée.

2. Utilisez PHP pour implémenter la détection du rythme cardiaque

Pour implémenter la détection du rythme cardiaque, vous avez besoin de deux scripts, l'un est le script client (Client.php), qui est utilisé pour envoyer régulièrement des requêtes de rythme cardiaque au serveur, et l'autre est le script client (Client.php), qui est utilisé pour envoyer régulièrement des requêtes de rythme cardiaque au serveur. script de serveur (Server.php). Utilisé pour recevoir des requêtes de battement de cœur et répondre avec des réponses appropriées. Jetons un coup d'œil à l'implémentation spécifique.

Script client (Client.php)

<?php
while(true) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'http://localhost:8000/');//服务器地址
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_exec($ch);
  curl_close($ch);
  sleep(5);//每 5 秒发送一次心跳请求
}
?>

Dans le code ci-dessus, curl est utilisé pour envoyer des requêtes HTTP, envoyer régulièrement des requêtes de battement de cœur au serveur et la fonction sleep() est utilisée pour implémenter l'envoi programmé.

Script serveur (Server.php)

<?php
header('Content-Type: text/plain');
echo "OK
";//响应成功信息
?>

Dans le code ci-dessus, le script serveur répond par un simple message de réussite après avoir reçu la requête envoyée par le client.

Afin de maintenir le serveur en marche, vous pouvez utiliser un logiciel serveur similaire à Nginx ou Apache comme environnement d'exécution pour les scripts serveur.

3. Utilisez Keepalive pour implémenter la détection des battements cardiaques

L'utilisation de Keepalive pour implémenter la détection des battements cardiaques nécessite l'installation du logiciel Keepalive et des configurations associées. Sous le système CentOS, Keepalive peut être installé via la commande suivante :

sudo yum install ipvsadm keepalived -y

Ce qui suit est un exemple du fichier de configuration Keepalive (keepalived.conf) :

vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 51
  priority 101
  authentication {
    auth_type PASS
    auth_pass 123456
  }
  virtual_ipaddress {
    192.168.10.10
  }
  track_script {
    chk_http_port
  }
}

vrrp_script chk_http_port {
  script "/usr/local/bin/alive.sh"
  interval 5
  weight 2
}

virtual_server 192.168.10.10 80 {
  delay_loop 6
  lb_algo rr
  lb_kind DR
  protocol TCP
  real_server 192.168.10.11 80 {
    weight 1
    TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3
      delay_before_retry 3
      connect_port 80
    }
  }
}

Le fichier de configuration ci-dessus définit un Instance VRRP (VI_1), l'état est MASTER ; définissez une adresse IP virtuelle (192.168.10.10) et définissez un script de suivi (chk_http_port) comme script de détection de battement de cœur ; définissez enfin un serveur virtuel (l'adresse IP est 192.168.10.10, port ; est 80), et définissez Créé un vrai serveur (adresse IP 192.168.10.11, port 80).

Ce qui suit est un exemple de script de suivi (alive.sh) :

#!/bin/bash
A=`curl -I -s -o /dev/null http://localhost`
if [ "$?" != "0" ] || [ "$A" == "" ]; then
  /etc/init.d/keepalived stop
fi
exit 0

Le script ci-dessus est utilisé pour détecter si le serveur est vivant, et si le serveur ne peut pas répondre ou répond avec une erreur, il arrêtera Keepalive .

4. Résumé

Dans cet article, nous avons présenté comment utiliser PHP et Keepalive pour implémenter la détection des battements cardiaques en temps réel. PHP peut envoyer des requêtes HTTP via curl pour simuler des requêtes de battement de coeur, tandis que Keepalive peut implémenter la détection de battement de coeur via VRRP et IPVS. Cette méthode peut améliorer la haute disponibilité des applications réseau et surveiller l’état du serveur en temps réel. C’est un outil réseau très utile.

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