1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
--TEST--
memcache->addServer() with server failure callback
--SKIPIF--
<?php include 'connect.inc'; if (!isset($host2)) die('skip $host2 not set'); ?>
--FILE--
<?php
include 'connect.inc';
function _callback_server_failure($host, $tcp_port, $udp_port, $error, $errnum) {
var_dump($host);
var_dump($tcp_port);
var_dump($udp_port);
var_dump($error);
var_dump($errnum);
global $memcache;
$memcache->setServerParams($host, $tcp_port, 1, -1, false, '_callback_server_failure');
}
// Test function callback using addServer()
$memcache = new Memcache();
$memcache->addServer($nonExistingHost, $nonExistingPort, false, 1, 1, 15, true, '_callback_server_failure');
$result1 = $memcache->set('test_key', 'test-032-01');
var_dump($result1);
class MemcachedFailureHandler {
function _callback_server_failure($host, $tcp_port, $udp_port, $error, $errnum) {
var_dump($host);
var_dump($tcp_port);
var_dump($udp_port);
var_dump($error);
var_dump($errnum);
}
}
// Test OO callback using setServerParams()
$memcache = new Memcache();
$memcache->addServer($nonExistingHost, $nonExistingPort, false);
$result2 = $memcache->setServerParams($nonExistingHost, $nonExistingPort, 1, 15, true,
array(new MemcachedFailureHandler(), '_callback_server_failure'));
var_dump($result2);
$result3 = $memcache->set('test_key', 'test-032-01');
var_dump($result3);
// Test giving non-existing callback to addServer()
$memcache = new Memcache();
$result4 = @$memcache->addServer($nonExistingHost, $nonExistingPort, false, 1, 1, 15, true, 'non_existing_user_function');
var_dump($result4);
// Test giving non-existing callback to setServerParams()
$memcache = new Memcache();
$memcache->addServer($nonExistingHost, $nonExistingPort, false);
$result5 = @$memcache->setServerParams($nonExistingHost, $nonExistingPort, 1, 15, true, 'non_existing_user_function');
var_dump($result5);
// Test self-referencing callback
class MyMemcache extends Memcache {
function _callback_server_failure($host, $tcp_port, $udp_port, $error, $errnum) {
var_dump($host);
}
}
$memcache = new MyMemcache();
$memcache->addServer($nonExistingHost, $nonExistingPort, false);
$result6 = $memcache->setServerParams($nonExistingHost, $nonExistingPort, 1, 15, true,
array($memcache, '_callback_server_failure'));
$result7 = @$memcache->set('test_key', 'test-032-01');
var_dump($result6);
var_dump($result7);
// Test resetting callback to null
$memcache = new Memcache();
$memcache->addServer($nonExistingHost, $nonExistingPort, false, 1, 1, 15, true, '_callback_server_failure');
$result8 = $memcache->setServerParams($nonExistingHost, $nonExistingPort, 1, 15, true, null);
$result9 = @$memcache->set('test_key', 'test-032-01');
var_dump($result8);
var_dump($result9);
// Test MemcachePool::setFailureCallback()
function _callback_server_failure2($host, $tcp_port, $udp_port, $error, $errnum) {
var_dump($error);
}
$memcache = new MemcachePool();
$memcache->addServer($nonExistingHost, $nonExistingPort);
$result8 = $memcache->setFailureCallback('_callback_server_failure2');
$result9 = @$memcache->set('test_key', 'test-032-01');
var_dump($result8);
var_dump($result9);
$result8 = $memcache->setFailureCallback(null);
$result9 = @$memcache->set('test_key', 'test-032-01');
var_dump($result8);
var_dump($result9);
// Test refcount
function test_connect() {
global $mc, $nonExistingHost, $nonExistingPort;
$mc = new Memcache();
$mc->addServer($nonExistingHost, $nonExistingPort, false, 1, 1, 15, true, '_callback_server_failure2');
}
test_connect();
$result10 = $mc->set('test_key', 'test-032-02');
var_dump($result10);
?>
--EXPECTF--
string(%d) "%s"
int(%d)
int(%d)
string(%d) "Connection %s"
int(%d)
bool(false)
bool(true)
string(%d) "%s"
int(%d)
int(%d)
string(%d) "Connection %s"
int(%d)
bool(false)
bool(false)
bool(false)
string(%d) "%s"
bool(true)
bool(false)
bool(true)
bool(false)
string(%d) "%s"
bool(true)
bool(false)
bool(true)
bool(false)
string(%d) "Connection %s"
bool(false)
|