Memcache::connect

memcache_connect

(PECL memcache >= 0.2.0)

Memcache::connect -- memcache_connectmemcached サーバーへの接続をオープンする

説明

Memcache::connect(string $host, int $port = ?, int $timeout = ?): bool
memcache_connect(string $host, int $port = ?, int $timeout = ?): Memcache

Memcache::connect() は、memcached サーバーへの接続を 確立します。 Memcache::connect() を使用してオープンされた接続は、 スクリプトの実行終了時に自動的に閉じられます。 Memcache::close() を使用して閉じることも可能です。

パラメータ

host
memcached が接続を待ち受けるホストを指定します。 このパラメータには別のトランスポート層を指定することもできます。たとえば unix:///path/to/memcached.sock のようにすると Unix ドメインソケットを使用できます。この場合、 port0 を指定しなければなりません。
port
memcached が接続を待ち受けるポートを指定します。 Unix ドメインソケットを使用する場合は、このパラメータを 0 とします。 port を指定しなかったときのデフォルトは memcache.default_port となります。そのため、このメソッドをコールするときにはポートを明示しておくことをおすすめします。
timeout
デーモンへの接続の際に使用する値 (秒単位) です。 デフォルト値を 1 秒でも変更する前には十分注意してください。 接続が遅くなってしまうと、 キャッシュ処理のメリットが なくなってしまいます。

戻り値

成功した場合に true を、失敗した場合に false を返します。

例1 Memcache::connect() の例

<?php

/* 手続き型の API */

$memcache_obj = memcache_connect('memcache_host', 11211);

/* オブジェクト指向の API */

$memcache = new Memcache;
$memcache->connect('memcache_host', 11211);

?>

注意

警告

port を省略した場合は、PHP の ini 設定 memcache.default_port の値をデフォルトとして使います。 もしこの値がアプリケーションのどこかで変更されていれば、予期せぬ結果を引き起こすかもしれません。 このメソッドをコールするときには、常にポートを明示しておくことをおすすめします。

参考

add a note

User Contributed Notes 1 note

up
11
geoffrey dot hoffman at gmail dot com
15 years ago
If memcached is working, calling memcache_connect( ) returns an Object instance, not a boolean. If memcached is not working, calling memcache_connect( ) throws a notice AND a warning (and returns false as expected). 

<?php
/* memcache is running */
$test1 = memcache_connect('127.0.0.1',11211);
echo gettype($test1);
// object
echo get_class($test1);
// Memcache

/* memcached is stopped */
$test2 = memcache_connect('127.0.0.1',11211);

/*
Notice: memcache_connect(): Server 127.0.0.1 (tcp 11211) failed with: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
 (10060) in C:\Program Files\Support Tools\- on line 1

Warning: memcache_connect(): Can't connect to 127.0.0.1:11211, A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
 (10060) in C:\Program Files\Support Tools\- on line 1
*/

echo gettype($test2);
// boolean
echo $test2===false;
// 1
?>

There appears to be no way to check whether memcached is actually running without resorting to error suppression:

<?php
$test3 = @memcache_connect('127.0.0.1',11211);
if( $test3===false ){
   // memcached is _probably_ not running
}
?>
To Top