update page now

Memcache::connect

memcache_connect

(PECL memcache >= 0.2.0)

Memcache::connect -- memcache_connect打开与 memcached 服务器的连接

说明

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域socket,在这种方式下,port参数必须设置为0
port
memcached服务端监听端口。当使用Unix域socket的时候要设置此参数为0 注意:如果未指定 port,默认为 memcache.default_port。因此,明智的做法是调用此方法时明确指定端口。
timeout
连接持续(超时)时间,单位秒。默认值1秒,修改此值之前请三思,过长的连接持续时间可能会导致失去所有的缓存优势。

返回值

成功时返回 true, 或者在失败时返回 false

示例

示例 #1 Memcache::connect() example

<?php

/* procedural API */

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

/* OO API */

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

?>

注释

警告

port 未指定时,此方法默认为 PHP ini 指令 memcache.default_port 的值。如果此值在应用程序的其他地方更改,可能会导致意外结果:因此,明智的做法是始终在这个方法调用。

参见

添加备注

用户贡献的备注 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