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.