Memcache::connect
(PECL memcache >= 0.2.0)
Memcache::connect — Open memcached server connection
Description
$host
[, int $port
[, int $timeout
]] )Memcache::connect() establishes a connection to the memcached server. The connection, which was opened using Memcache::connect() will be automatically closed at the end of script execution. Also you can close it with Memcache::close(). Also you can use memcache_connect() function.
Parameters
-
host
-
Point to the host where memcached is listening for connections. This parameter may also specify other transports like unix:///path/to/memcached.sock to use UNIX domain sockets, in this case
port
must also be set to 0. -
port
-
Point to the port where memcached is listening for connections. Set this parameter to 0 when using UNIX domain sockets.
Please note:
port
defaults to memcache.default_port if not specified. For this reason it is wise to specify the port explicitly in this method call. -
timeout
-
Value in seconds which will be used for connecting to the daemon. Think twice before changing the default value of 1 second - you can lose all the advantages of caching if your connection is too slow.
Notes
When the port
is unspecified, this method defaults to the
value set of the PHP ini directive
memcache.default_port
If this value was changed elsewhere in your application it might lead to
unexpected results: for this reason it is wise to always specify the port
explicitly in this method call.
Return Values
Returns TRUE
on success or FALSE
on failure.
Examples
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);
?>
See Also
- Memcache::pconnect() - Open memcached server persistent connection
- Memcache::close() - Close memcached server connection
- Функция Memcache::add() - Add an item to the server
- Функция Memcache::addServer() - Add a memcached server to connection pool
- Функция Memcache::close() - Close memcached server connection
- Функция Memcache::connect() - Open memcached server connection
- Функция Memcache::decrement() - Decrement item's value
- Функция Memcache::delete() - Delete item from the server
- Функция Memcache::flush() - Flush all existing items at the server
- Функция Memcache::get() - Retrieve item from the server
- Функция Memcache::getExtendedStats() - Get statistics from all servers in pool
- Функция Memcache::getServerStatus() - Returns server status
- Функция Memcache::getStats() - Get statistics of the server
- Функция Memcache::getVersion() - Return version of the server
- Функция Memcache::increment() - Increment item's value
- Функция Memcache::pconnect() - Open memcached server persistent connection
- Функция Memcache::replace() - Replace value of the existing item
- Функция Memcache::set() - Store data at the server
- Функция Memcache::setCompressThreshold() - Enable automatic compression of large values
- Функция Memcache::setServerParams() - Changes server parameters and status at runtime
Коментарии
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
}
?>
In describing the timeout there is a statement that is not completely correct, increase the timeout does not necessarily preclude or unfeasible memcache, only allows the system to wait for more concurrent connections, which is a large minority of the number of connections, this causes several problems and could simply be corrected if the timeout was increased and perform some tests.
To prove the concept and show that the connection does not wait if the server goes down:
<?PHP
while ( ++$loop < 10000 ) {
try {
$memcache = new Memcache;
@$memcache->pconnect( "127.0.0.1" , 11211 , 30 );
$loopset = 0;
$loopget = 0;
while ( ++$loopset < 50 ) {
if ( @$memcache->set( "foo" , "bar" ) === false ) {
echo "Fail!" . PHP_EOL;
}
}
while ( ++$loopget < 500 ) {
if ( @$memcache->get( "foo" ) === false ) {
echo "Fail!" . PHP_EOL;
}
}
if ( $loop % 100 == 0 ) {
echo "Try: " . $loop . PHP_EOL;
}
} catch ( Exception $e ) {
echo "Fail: " . $e->getMessage() . PHP_EOL;
}
}
?>
Replace with an invalid host and test the timeout will not make a difference! It serves only for connections to the socket that are occupied.
More detail about troubleshooting timeouts in memcached google code.