phpredis 4.3.0 では、close() は pconnect() によって作成された接続を閉じることができます。 close() の後に redis メソッドを使用すると、新しい永続的な接続が自動的に作成されます。
タイムアウトで pconnect を呼び出していますか?タイムアウトを超えるたびに接続が閉じられると仮定すると、マスターを再解決してから、別のアドレスで pconnect を再度呼び出すことができます。
Redisクラスターを実行している場合、PHPRedisには、「MOVED」応答をサポートするこのセットアップに固有のタイムアウト動作を備えたクラスターモードがあります:https://github.com/phpredis/phpredis/blob/develop/cluster.markdown#timeout
永続的なストリームは PHP 内部によって提供されます。永続的なストリームを作成する方法を公開するものは、それを破棄する方法も提供する必要があるという不文律があります。
PHP Redis はその法律を破っています。ユーザーランドから永続的なストリームを破棄する方法はまったくありません。
行動方針は、必要なメソッドの実装を PR することです。
Redis::pclose を実装する PHP7 ブランチに対するパッチは次のとおりです:https://gist.github.com/krakjoe/326eadc61bea38fdd6e6
pdisconnect のコードは既存の切断に基づいていることに注意してください。これらの関数はどちらも私には奇妙に見え、戻り値について正直ではありません。その奇妙さに依存しているいくつかのテストまたはコードがどこかにあると思いますので、修正を試みていません。
PR では、これらの関数は奇妙に見えることに言及する必要があります。PHP7 は問題を解決するのに最適な時期です。