To suppress (or handle) the warning and notice thrown by a failed attempt to connect, you can use a custom error handler function, like this:
<?php
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
if (E_WARNING === $errno)
{
Log("PHP Warning: $errstr, $errfile, $errline", Logging::WARN);
return true;
}
if (E_NOTICE === $errno)
{
Log("PHP Notic: $errstr, $errfile, $errline", Logging::NOTICE);
return true;
}
return false;
}
set_error_handler('myErrorHandler');
?>
Memcache::connect
(PECL memcache >= 0.2.0)
Memcache::connect — Abre una conexión al servidor memcached
Descripción
Memcache::connect() establece una conexión al servidor memcached. La conexión, que fue abierta usando Memcache::connect() será automáticamente cerrada al finalizar la ejecucción del script. También se puede cerrar con Memcache::close(). También puede usar la función memcache_connect().
Parámetros
- host
-
El host donde el memcached está esperando conexiones. En este parámetro también se puede especificar otros transporte como unix:///path/to/memcached.sock para usar UNIX domain sockets. En este caso port debe ser establecido a 0.
- port
-
El puerto donde memcached está esperando conexiones. Establezca este parámetro a 0 cuando se usan UNIX domain sockets.
- timeout
-
Valor en segundos que se utilizarán para conectarse al demonio. Piensa dos veces antes de cambiar el valor por defecto de 1 segundo, puedes perder todas la ventajas del caché si tus conexiones son muy lentas.
Valores devueltos
Devuelve TRUE en caso de éxito o FALSE en caso de error.
Ejemplos
Example #1 Memcache::connect() example
<?php
/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
/* OO API */
$memcache = new Memcache;
$memcache->connect('memcache_host', 11211);
?>
Ver también
- Memcache::pconnect() - Abre una conexión persistente a memcached
- Memcache::close() - Cierra la conexión al servidor memcached
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
}
?>
The behavior of Memcache::connect() is to always reinitialize the pool from scratch regardless of any previous calls to addServer().
E.g.
<?php
$mmc = new Memcache()
$mmc->addServer('node1', 11211);
$mmc->addServer('node2', 11211);
$mmc->addServer('node3', 11211);
$mmc->connect('node1', 11211);
?>
The last connect() call clears out the pool and then add and connect node1:11211 making it the only server.
If you want a pool of memcache servers, do not use the connect() function.
If you only want a single memcache server then there is no need to use the addServer() function.
