GNU/Linux >> Tutoriels Linux >  >> Linux

Comment fermer ou réinitialiser une connexion pconnect() lors de l'utilisation de PHPRedis et PHP-FPM ?

dans phpredis 4.3.0, close() peut fermer la connexion créée par pconnect(). si vous utilisez la méthode redis après close(), une nouvelle connexion persistante sera automatiquement créée.


Appelez-vous pconnect avec un délai d'attente ? En supposant que la connexion est fermée chaque fois que le délai d'attente est dépassé, vous pouvez résoudre à nouveau le maître avant d'appeler à nouveau pconnect avec une adresse différente.

Si vous exécutez un cluster Redis, PHPRedis a un mode cluster avec un comportement de délai d'attente spécifique à cette configuration avec prise en charge de la réponse 'MOVED' :https://github.com/phpredis/phpredis/blob/develop/cluster.markdown#timeout


Les flux persistants sont fournis par les composants internes de PHP, c'est une loi non écrite selon laquelle tout ce qui expose un moyen de créer un flux persistant doit également fournir un moyen de le détruire.

PHP Redis enfreint cette loi, il n'y a tout simplement aucun moyen pour vous de détruire ce flux persistant depuis userland.

Le plan d'action devrait être de PR une mise en œuvre de la méthode requise.

Voici un patch contre la branche PHP7 qui implémente Redis ::pclose :https://gist.github.com/krakjoe/326eadc61bea38fdd6e6

Notez que le code de pdisconnect est basé sur la déconnexion existante, ces deux fonctions me semblent étranges et ne sont pas honnêtes quant à leur valeur de retour. Je suppose qu'il y a des tests ou du code quelque part qui reposent sur cette étrangeté, donc je n'ai pas essayé de le réparer.

Tout PR devrait mentionner que ces fonctions semblent étranges, et PHP7 est le moment idéal pour casser des trucs.


Linux
  1. Redis comme cache :comment ça marche et pourquoi l'utiliser

  2. Pare-feu Raspberry Pi :comment l'installer et le gérer à l'aide d'UFW

  3. Comment utiliser Ansible pour installer et configurer Redis 6 sur Ubuntu 20.04

  4. Comment installer et configurer Redis sur Debian

  5. Comment détruire complètement une connexion socket en C

Comment zoomer et dézoomer des vidéos à l'aide de FFmpeg

Comment exécuter des applications Linux sur Windows 10 et 11 à l'aide de WSL

Comment rechercher et fermer des ports ouverts sous Linux

Comment cloner et restaurer une partition Linux à l'aide de la commande dd

Comment utiliser la commande DD et comment graver ISO en l'utilisant

Comment installer et configurer Redis sur le système Linux