Important to not call ->addServers() every run -- only call it if no servers exist (check getServerList() ); otherwise, since addServers() does not check for dups, it will let you add the same server again and again and again, resultings in hundreds if not thousands of connections to the MC daemon. Specially when using FastCGI.
Example:
<?php
class Cache {
private $id;
private $obj;
function __construct($id){
$this->id = $id;
$this->obj = new Memcached($id);
}
public function connect($host , $port){
$servers = $this->obj->getServerList();
if(is_array($servers)) {
foreach ($servers as $server)
if($server['host'] == $host and $server['port'] == $port)
return true;
}
return $this->obj->addServer($host , $port);
}
}
?>Memcached::addServer
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Memcached::addServer
Референца за `memcached.addserver.php` со подобрена типографија и навигација.
Memcached::addServer
(PECL memcached >= 0.1.0)
Memcached::addServer — Add a server to the server pool
= NULL
Низа од сервери за додавање во групата. Додај сервер во групата сервери
Memcached::DISTRIBUTION_CONSISTENT or
Memcached::OPT_LIBKETAMA_COMPATIBLEго додава наведениот сервер во групата сервери. Во моментов не се воспоставува врска со серверот, но ако ја користите опцијата за конзистентна дистрибуција на клучеви (преку
Додај повеќе сервери во групата на сервери ), некои од внатрешните структури на податоци ќе мора да се ажурираат. Така, ако треба да додадете повеќе сервери, подобро е да користите
треба да биде низа која содржи име на хост, порта и, опционално, тежина на серверот. Во овој момент не се воспоставува врска со серверите.
weight Истиот сервер може да се појави повеќе пати во групата на сервери, бидејќи не се вршат проверки за дупликати. Ова не се препорачува; наместо тоа, користете ја опцијата
Параметри
host-
бидејќи ажурирањето тогаш се случува само еднаш.
Memcached::RES_HOST_LOOKUP_FAILUREИме на домаќин на memcache серверот. Ако името на домаќинот е невалидно, операциите поврзани со податоци ќе постават/path/to/memcached.sockкод на резултатот. Од верзија 2.0.0b1, овој параметар може исто така да ја специфицира патеката на unix socket filepath, на пр.portза да користите UNIX доменски сокети, во овој случај0. port-
мора исто така да биде поставено на
11211Портата на која работи memcache. Обично, ова е0. Од верзија 2.0.0b1, поставете го овој параметар на weight-
кога користите UNIX доменски сокети.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.
Примери
Пример #1 Низа од сервери за додавање во групата. example
<?php
$m = new Memcached();
/* Add 2 servers, so that the second one
is twice as likely to be selected. */
$m->addServer('mem1.domain.com', 11211, 33);
$m->addServer('mem2.domain.com', 11211, 67);
?>Види Исто така
- Додај повеќе сервери во групата на сервери - Додај повеќе сервери во групата на сервери
- Memcached::addServer() Memcached::resetServerList()
Белешки од корисници 3 белешки
As of version 2.0.0b1 you can use Unix socket.
<?php
$m = new Memcached();
$m->addServer('/path/to/socket',0);
?>
Not to be confused with Memcache that use 'unix:///path/to/socket'On my Debian Squeeze system I was getting WRITE FAILURE errors. After debugging and finally tcpdump it seems that the problem was me adding the server 'localhost', which resolved to '::1' (ipv6) while the default memcached server on debian only listens to '127.0.0.1' (ipv4). DNS automatically prefers ipv6 over ipv4.
I added the server '127.0.0.1' instead and everything worked. You could also disable ipv6 or have memcached listen on ::1