Maison > Article > développement back-end > Quelle est la différence entre une connexion longue et une connexion courte en php
La différence entre une connexion longue et une connexion courte en php : 1. Une connexion courte signifie qu'une fois la connexion SOCKET établie, la connexion est déconnectée immédiatement après l'envoi et la réception des données, tandis qu'une connexion longue signifie qu'une fois la connexion SOCKET établie, la connexion est interrompue. la connexion est maintenue, qu'elle soit utilisée ou non, jusqu'à ce qu'une partie ferme la connexion. 2. Comparées aux connexions courtes, les connexions longues sont moins sécurisées.
L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3
Connexion courte
Connecter->Transférer les données->Fermer la connexion
Par exemple, HTTP Il s'agit d'un lien court sans état Chaque fois que le navigateur et le serveur effectuent une opération HTTP, une connexion est établie, mais la connexion est interrompue 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 -> le handle du serveur et envoie un message HttpResponse au front-end et appelle immédiatement le socket.close après l'avoir envoyé. ->le client reçoit le message de réponse ->le client recevra éventuellement un signal du serveur pour déconnecter la connexion TCP ->le client déconnecte la connexion TCP, notamment en appelant la méthode close.
Vous pouvez également dire ceci : 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 de 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 sans état.
Connexion longue
Connecter->Transférer des données->Rester connecté->Transférer des données-> .........-> C'est le client qui 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 déconnectera automatiquement la connexion si ce temps de connexion est dépassé.
Le moyen le plus simple et le plus pratique dans ce cas 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 limiter toutes les connexions. Peut se connecter 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 d'un script sur illimité via set_time_limit, puis utilisez flush() et ob_flush() pour vider la zone tampon du serveur afin d'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); } ?>
Lorsque nous l'exécuterons, nous l'exécuterons toutes les 5 secondes. Grâce à cette méthode, nous pouvons effectuer de nombreuses fonctions, telles que les programmes de surveillance en arrière-plan, les fonctions d'exécution planifiées, l'analyse des journaux, le tri des données et d'autres opérations fastidieuses.
Apprentissage recommandé : "Tutoriel vidéo PHP"
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!