Maison >développement back-end >Problème PHP >La différence entre une connexion longue et une connexion courte php

La différence entre une connexion longue et une connexion courte php

(*-*)浩
(*-*)浩original
2019-09-12 09:40:163802parcourir

Présentez d'abord la différence entre les liens courts et les liens longs :

La différence entre une connexion longue et une connexion courte php

Lien court

Connecter->Transférer les données->Fermer la connexion (apprentissage recommandé : Programmation PHP du débutant au compétent)

Par exemple, HTTP est un lien court, un navigateur et un serveur sans état Chaque Chaque fois qu'une opération HTTP est effectuée, une connexion est établie, mais la connexion prend fin lorsque la tâche est terminée.

Plus précisément, le client du navigateur initie et établit une connexion TCP-> le client envoie un message HttpRequest-> le serveur reçoit le message->handle du serveur et envoie un message HttpResponse au front-end, qui est appelé immédiatement après l'envoi de la méthode socket.close ->le client reçoit le message de réponse->le client finira par recevoir un signal du serveur pour déconnecter la connexion TCP->le client déconnecte la connexion TCP, notamment en appelant la méthode close.

On peut aussi dire : une connexion courte signifie qu'une fois le SOCKET connecté, la connexion est immédiatement déconnectée après l'envoi et la réception des données.

La connexion étant déconnectée après réception des données, il n'y aura aucun contact à chaque fois que les données seront acceptées et traitées. C'est l'une des raisons pour lesquelles le protocole HTTP est apatride.

Connexion longue

Connecter->Transférer des données->Rester connecté->Transférer des données-> ->Jusqu'à ce qu'une partie ferme la connexion, il est possible que le client ferme la connexion.

Une connexion longue signifie qu'après avoir établi une connexion SOCKET, elle reste connectée, qu'elle soit utilisée ou non, mais la sécurité est mauvaise.

Chaque fois que nous accédons à un script PHP, nous n'obtenons le résultat de retour qu'une fois que tous les scripts PHP ont été exécutés. Si nous avons besoin qu'un script s'exécute en continu, nous devons alors utiliser une connexion longue PHP pour atteindre l'objectif de l'opération.

L'environnement php général est apache+php+linux, mais comme apache a une limite de temps sur les connexions php, généralement le serveur apache se déconnectera automatiquement si ce temps de connexion est dépassé.

Dans ce cas, le moyen le plus simple et le plus pratique est de définir set_time_limit(0) dans la page php (bien sûr, cela peut également être défini dans le fichier de configuration php.ini, mais cela aura un impact sur l'ensemble de l'environnement. Après tout, nous ne voulons pas que toutes les connexions puissent être connectées pendant une longue période, affectant les performances du service)

Chaque script PHP limite le temps d'exécution, nous devons donc définir le temps d'exécution de un script en illimité via set_time_limit, puis utilisez flush() et ob_flush() pour effacer le tampon du serveur et afficher la valeur de retour du script à tout moment.

<?php   
header("Content-Type: text/plain");   
set_time_limit(0);   
  
while( true )   
{   
// 持续执行的脚本  
flush();   
ob_flush();   
sleep(5);   
}   
?>

Après l'exécution, nous l'exécuterons toutes les 5 secondes. Grâce à cette méthode, nous pouvons effectuer de nombreuses fonctions, telles que le programme de surveillance en arrière-plan, la fonction d'exécution planifiée, l'analyse des journaux, le tri des données, etc.

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