Avant-propos
De nombreuses personnes âgées nous ont prévenus que le rechargement peut garantir la fluidité de l'ensemble du processus. La soi-disant fluidité signifie que pendant le processus de rechargement, l'ancien processus y sera. il n’y aura pas de résiliation anticipée avant la demande en cours. Pendant de nombreuses années, je n'ai jamais remis en question cette affirmation jusqu'au jour où, lorsque j'ai rechargé, une erreur 502 s'est produite et j'ai dû y repenser.
Comment reproduire le problème ? Écrivons un script simple pour simuler :
<?php sleep(11); echo "foo"; ?>
À ce stade, utilisez le navigateur pour parcourir cette URL, puis exécutez immédiatement le opération de rechargement. Vous pouvez voir l’erreur 502.
PHP est-il si faible ? Vous ne pouvez même pas garantir la fluidité de base du rechargement ? La réponse est bien sûr non, en fait notre objectif peut être atteint grâce aux paramètres
process_control_timeout
. Malheureusement, ce paramètre a la valeur par défaut 0, ce qui signifie qu'il ne prend pas effet. Cet article le définit sur 10s. Réexécutez les étapes expérimentales précédentes, et cette fois les résultats sont affichés normalement. Cependant, si vous faites quelques expériences supplémentaires, vous constaterez peut-être que le sommeil se termine immédiatement lorsque nous rechargeons. En effet, le sommeil revient directement après avoir reçu le signal du rechargement :
<?php sleep(11); echo "foo"; sleep(11); echo "bar"; ?>
Réexécutez les étapes expérimentales précédentes et vous constaterez que l'erreur 502 réapparaît. En effet, bien que le rechargement entraîne la fin immédiate du premier sommeil, le deuxième sommeil est toujours valide et dépasse la limite de temps de
process_control_timeout. Si nous réglons
process_control_timeoutsur 12s, alors tout ira bien à nouveau.
De cette façon, il suffit de définir une valeur raisonnable pour
process_control_timeoutpour garantir la fluidité de l'opération de rechargement. Mais qu'est-ce qu'une valeur raisonnable ? S’il est trop petit, il risque de ne pas être efficace. S’il est trop important, y aura-t-il des effets secondaires ? Répétons la dernière expérience avec des questions, mais cette fois nous ajoutons un autre moniteur :
shell> watch -n1 'ps aux | grep php[-]fpm'
Le but de ce moniteur est d'observer le processus de rechargement. dans le nombre de processus PHP-FPM Afin de rendre l'effet plus évident, il est recommandé de changer le mode de démarrage de PHP-FPM en mode statique, et en même temps, le nombre de processus ne doit pas être trop élevé.
Lorsque nous avons répété la dernière expérience, nous avons constaté qu'à l'exception du processus qui exécutait la requête, d'autres processus étaient directement tués et que le nouveau processus n'était pas démarré immédiatement et qu'il restait bloqué jusqu'au dernier ancien processus. a été exécuté. Après cela, le nouveau processus termine le processus de démarrage. Durant cette période, si d’autres demandes arrivent, elles ne recevront sans doute pas de réponse immédiate.
Sur la base de nos expériences, nous pouvons conclure que par défaut, PHP-FPM ne peut pas garantir le bon déroulement de l'opération de rechargement, et qu'un
process_control_timeoutraisonnable doit être défini en même temps. , Notez que la valeur ne peut pas être définie sur une valeur trop élevée, sinon le système pourrait avoir des problèmes de congestion des demandes plus graves.
Résumé
Ce qui précède concerne l'opération de rechargement en PHP. Pour plus de contenu connexe, veuillez faire attention au site Web chinois PHP (www.php.cn). !

L'équilibrage de charge affecte la gestion de la session, mais peut être résolu avec la réplication de la session, l'adhérence des sessions et le stockage centralisé de session. 1. Session Replication Copy Données de session entre les serveurs. 2. Session Stickleness dirige les demandes d'utilisateurs vers le même serveur. 3. Le stockage centralisé de session utilise des serveurs indépendants tels que Redis pour stocker les données de session pour assurer le partage de données.

Session BlockingSateChnique utilisétoenSureAuser'sessionremainSexclusiVetoonUseratatime.ITCUCIALFORPREVERSDATACORUPRUPTIONANDSECRYSEURCHEBRESSInMulti-userApplications.SessionLockingisImplementEdUsingServer-SidelockingMechanisms, telasreentrantLockinjj

Les alternatives aux séances PHP comprennent des cookies, une authentification basée sur des jetons, des sessions basées sur la base de données et Redis / Memcached. 1.CooKies Gérer les sessions en stockant des données sur le client, ce qui est simple mais faible en sécurité. 2. L'authentification basée sur le token utilise des jetons pour vérifier les utilisateurs, ce qui est hautement sécurisé mais nécessite une logique supplémentaire. 3.Database basée sur les séances stocke les données dans la base de données, qui a une bonne évolutivité mais peut affecter les performances. 4. redis / memcached utilise un cache distribué pour améliorer les performances et l'évolutivité, mais nécessite une correspondance supplémentaire

SessionHijacking fait référence à un attaquant imitant un utilisateur en obtenant le SessionID de l'utilisateur. Les méthodes de prévention comprennent: 1) le chiffrement de la communication à l'aide de HTTPS; 2) Vérification de la source du sessionID; 3) Utilisation d'un algorithme de génération de sessionID sécurisé; 4) Mise à jour régulière du SessionID.

L'article traite de PHP, détaillant sa forme complète, les principales utilisations du développement Web, la comparaison avec Python et Java, et sa facilité d'apprentissage pour les débutants.

PHP gère les données de formulaire à l'aide de $ \ _ Post et $ \ _ obtiennent des superglobaux, avec la sécurité assurée par la validation, la désinfection et les interactions de base de données sécurisées.

L'article compare PHP et ASP.NET, en se concentrant sur leur pertinence pour les applications Web à grande échelle, les différences de performances et les fonctionnalités de sécurité. Les deux sont viables pour les grands projets, mais PHP est open-source et indépendant de la plate-forme, tandis que ASP.NET,

La sensibilité à la caisse de PHP varie: les fonctions sont insensibles, tandis que les variables et les classes sont sensibles. Les meilleures pratiques incluent la dénomination cohérente et l'utilisation de fonctions insensibles à des cas pour les comparaisons.


Outils d'IA chauds

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.

Undress AI Tool
Images de déshabillage gratuites

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

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Version Mac de WebStorm
Outils de développement JavaScript utiles

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP

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