in phpredis 4.3.0 kann close() die von pconnect() erstellte Verbindung schließen. Wenn Sie die redis-Methode nach close() verwenden, wird automatisch eine neue dauerhafte Verbindung erstellt.
Rufen Sie pconnect mit einem Timeout auf? Angenommen, die Verbindung wird jedes Mal geschlossen, wenn das Timeout überschritten wird, könnten Sie den Master erneut auflösen, bevor Sie pconnect erneut mit einer anderen Adresse aufrufen.
Wenn Sie einen Redis-Cluster betreiben, verfügt PHPRedis über einen Cluster-Modus mit Timeout-Verhalten, das spezifisch für dieses Setup ist, mit Unterstützung für die Antwort „MOVED“:https://github.com/phpredis/phpredis/blob/develop/cluster.markdown#timeout
Persistente Streams werden von PHP-Interna bereitgestellt, es ist ein ungeschriebenes Gesetz, dass alles, was einen Weg zum Erstellen eines persistenten Streams offenlegt, auch einen Weg bieten sollte, ihn zu zerstören.
PHP Redis bricht dieses Gesetz, es gibt einfach keine Möglichkeit für Sie, diesen dauerhaften Stream aus dem Userland zu zerstören.
Die Vorgehensweise sollte PR eine Implementierung der erforderlichen Methode sein.
Hier ist ein Patch gegen den PHP7-Zweig, der Redis::pclose implementiert:https://gist.github.com/krakjoe/326eadc61bea38fdd6e6
Beachten Sie, dass der Code für pdisconnect auf der vorhandenen Trennung basiert, diese beiden Funktionen sehen für mich seltsam aus und sind nicht ehrlich in Bezug auf ihren Rückgabewert. Ich nehme an, es gibt irgendwo einige Tests oder Code, die sich auf diese Seltsamkeit verlassen, also habe ich nicht versucht, es zu beheben.
Jeder PR sollte erwähnen, dass diese Funktionen seltsam aussehen und PHP7 der perfekte Zeitpunkt ist, um Dinge kaputt zu machen.