GNU/Linux >> Linux の 問題 >  >> Linux

PHPRedis と PHP-FPM を使用しているときに pconnect() 接続を閉じたりリセットしたりする方法は?

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 は問題を解決するのに最適な時期です。


Linux
  1. キャッシュとしてのRedis:その仕組みと使用理由

  2. Raspberry Piファイアウォール:UFWを使用してインストールおよび管理する方法

  3. ddを使用してISOイメージをDVDおよびUSBに書き込む方法

  1. Container-diffを使用してコンテナイメージを分析および比較する方法

  2. Ansibleを使用してUbuntu20.04にRedis6をインストールおよび構成する方法

  3. Ubuntu18.04にRedisをインストールして保護する方法

  1. Debian に Redis をインストールして構成する方法

  2. PHP-FPM を使用して PHP を実行するように Nginx を構成する方法

  3. C でソケット接続を完全に破棄する方法