Memcache::addServer() は、コネクションプールに サーバを追加します。 実際の接続は、最初に使用する際に確立されます。 Memcache::addServer() を使用してオープンされた 接続は、スクリプトの実行終了時に自動的に閉じられます。 Memcache::close() を使用して閉じることも可能です。 memcache_add_server() 関数を使用することも可能です。
(Memcache::connect()() および Memcache::pconnect()() ではなく) このメソッドを使用すると、ネットワーク接続は それが実際に必要となるときまで確率されません。 つまり、大量のサーバをプールに追加した場合に、 それらすべてが使用されることはないとしてもオーバーヘッドが発生しないということです。
他のサーバが使用可能である場合、あらゆるメソッドのあらゆる段階について ユーザが意識しないままにフェイルオーバー処理が行われます。 ソケットあるいは Memcaches サーバレベルで発生したあらゆるエラー (ただし out-of-memory は除く) に対してフェイルオーバーが動作します。 既存のキーを追加しようとしたなどの通常のクライアントエラーの場合は、 フェイルオーバー処理は起動しません。
注意: この関数は、Memcache バージョン 2.0.0 で追加されました。
host
memcached が接続を待ち受けるホストを指定します。
このパラメータには別のトランスポート層を指定することもできます。たとえば
unix:///path/to/memcached.sock
のようにすると Unix ドメインソケットを使用できます。この場合、
port
は 0
を指定しなければなりません。
port
memcached が接続を待ち受けるポートを指定します。 このパラメータはオプションで、デフォルト値は 11211 です。 Unix ドメインソケットを使用する場合は、このパラメータを 0 とします。
persistent
持続的な接続を使用するかどうかを指定します。 デフォルトは TRUE です。
weight
このサーバに対して割り当てる容器の数を指定します。これは、 このサーバが選択される可能性を左右します。選択される可能性は、 すべてのサーバの weight の合計に対するこのパラメータの割合で 決まります。
timeout
デーモンへの接続の際に使用する値 (秒単位) です。 デフォルト値を 1 秒でも変更する前には十分注意してください。 接続が遅くなってしまうと、 キャッシュ処理のメリットが なくなってしまいます。
retry_interval
サーバとの接続が失敗した際に再試行を行う頻度を設定します。
デフォルト値は 15 秒です。このパラメータを -1 にすると、
自動的な再試行を行いません。
dl() を使用してこの拡張モジュールが動的に
読み込まれている場合は、このパラメータおよび
persistent
は何の効果も及ぼしません。
失敗した接続構造体は、個々にタイムアウト値を持っており、
タイムアウト時間が経過するまでは、バックエンドから新たな要求が来ても
その構造体はスキップされます。時間が経過すると、
その接続が無事再接続されるか、あるいはさらに
retry_interval
秒の間、接続失敗と記録されます。
典型的な効果は、ウェブサーバの各子プロセスがページを送り出す際に
retry_interval
秒ごとに接続を再試行することです。
status
サーバがオンライン状態であるかどうかを制御します。このパラメータを
FALSE にし、retry_interval
を -1
と設定すると、失敗したサーバもコネクションプールに残します。
これにより、キー配布アルゴリズムに影響を与えないようにします。
このサーバへのリクエストは、フェイルオーバーされるか失敗します。
どちらになるかは memcache.allow_failover
の設定によって決まります。デフォルトは TRUE で、
サーバがオンライン状態であることを意味します。
failure_callback
エラーが発生した際に実行されるコールバック関数を指定できるようにします。 コールバック関数は、フェイルオーバー処理の前に実行されます。 この関数は、ふたつの引数 (ホスト名、失敗したサーバのポート) を受け取ります。