ÿØÿà JFIF    ÿÛ „ ( %!1!%*+...983,7(-.- PK[]>wbtests/session_lock.phptnu[--TEST-- Session lock --SKIPIF-- = 70100) print "skip"; ?> --INI-- memcached.sess_locking = true memcached.sess_lock_wait_min = 500 memcached.sess_lock_wait_max = 1000 memcached.sess_lock_retries = 3 memcached.sess_prefix = "memc.test." # Turn off binary protocol while the test matrix has older versions of # libmemcached for which the extension warns of a broken touch command. memcached.sess_binary_protocol = Off session.save_handler = memcached --FILE-- addServer(MEMC_SERVER_HOST, MEMC_SERVER_PORT); ob_start(); ini_set ('session.save_path', MEMC_SERVER_HOST . ':' . MEMC_SERVER_PORT); session_start(); $session_id = session_id(); $_SESSION["test"] = "hello"; session_write_close(); session_start(); var_dump ($m->get ('memc.test.' . session_id())); var_dump ($m->get ('memc.test.lock.' . session_id())); session_write_close(); var_dump ($m->get ('memc.test.lock.' . session_id())); // Test lock min / max $m->set ('memc.test.lock.' . $session_id, '1'); $time_start = microtime(true); session_start(); $time = microtime(true) - $time_start; if (round ($time, 1) != 2.5) { echo "Waited longer than expected: $time" . PHP_EOL; } echo "OK"; --EXPECTF-- string(17) "test|s:5:"hello";" string(1) "1" bool(false) Warning: session_start(): Unable to clear session lock record in %s on line %d OK PK[]3tests/construct_persistent.phptnu[--TEST-- persistent memcached connection --SKIPIF-- --FILE-- setOption(Memcached::OPT_PREFIX_KEY, 'php'); var_dump($m1->getOption(Memcached::OPT_PREFIX_KEY)); $m2 = new Memcached('id1'); var_dump($m1->getOption(Memcached::OPT_PREFIX_KEY)); $m3 = new Memcached(); var_dump($m3->getOption(Memcached::OPT_PREFIX_KEY)); ?> --EXPECT-- string(3) "php" string(3) "php" string(0) "" PK[]iP__tests/gh_93.phptnu[--TEST-- Test for Github issue #93 (double and long overflow) --SKIPIF-- --FILE-- false )); function testOverflow($m, $value) { $m->delete('overflow'); if (true !== $m->set('overflow', $value)) { echo "Error storing 'overflow' variable\n"; return false; } if (true !== $m->prepend('overflow', str_repeat('0', 128))) { echo "Error prepending key\n"; return false; } $v = @$m->get('overflow'); if ($v !== $value) { // At least it doesn't segfault, so we're happy for now // echo "Error receiving 'overflow' variable\n"; // return false; return true; } return true; } if (!testOverflow($m, 10)) { return; } if (!testOverflow($m, 9.09)) { return; } echo "OK\n"; ?> --EXPECT-- OKPK[]hhhtests/types_php_multi.phptnu[--TEST-- Memcached multi store & fetch type and value correctness using PHP serializer --SKIPIF-- --FILE-- --EXPECT-- TEST DONE PK[]Ɂ33tests/options.phptnu[--TEST-- Memcached options --SKIPIF-- --FILE-- setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_PHP); var_dump($m->getOption(Memcached::OPT_COMPRESSION)); var_dump($m->getOption(Memcached::OPT_SERIALIZER)); var_dump($m->getOption(Memcached::OPT_SOCKET_SEND_SIZE)); $m->setOption(Memcached::OPT_PREFIX_KEY, "\x01"); var_dump($m->getOption(Memcached::OPT_HASH) == Memcached::HASH_DEFAULT); $m->setOption(Memcached::OPT_HASH, Memcached::HASH_MURMUR); var_dump($m->getOption(Memcached::OPT_HASH) == Memcached::HASH_MURMUR); $m->setOption(Memcached::OPT_COMPRESSION_TYPE, Memcached::COMPRESSION_ZLIB); var_dump($m->getOption(Memcached::OPT_COMPRESSION_TYPE) == Memcached::COMPRESSION_ZLIB); $m->setOption(Memcached::OPT_COMPRESSION_TYPE, Memcached::COMPRESSION_FASTLZ); var_dump($m->getOption(Memcached::OPT_COMPRESSION_TYPE) == Memcached::COMPRESSION_FASTLZ); var_dump($m->setOption(Memcached::OPT_COMPRESSION_TYPE, 0)); var_dump($m->getOption(Memcached::OPT_COMPRESSION_TYPE) == Memcached::COMPRESSION_FASTLZ); ?> --EXPECTF-- bool(true) int(1) Warning: Memcached::getOption(): no servers defined in %s on line %d NULL Warning: Memcached::setOption(): bad key provided in %s on line %d bool(true) bool(true) bool(true) bool(true) bool(false) bool(true) PK[]Јtests/deletemultitypes.phptnu[--TEST-- Delete multi key types --SKIPIF-- --FILE-- deleteMulti($keys); array_walk($keys, 'dump_types'); ?> --EXPECT-- integer string integer stringPK[]X-7::tests/default_behavior.phptnu[--TEST-- Default behaviors --SKIPIF-- --FILE-- getOption(Memcached::OPT_DISTRIBUTION) == Memcached::DISTRIBUTION_MODULA); var_dump ($m->getOption(Memcached::OPT_BINARY_PROTOCOL) == false); var_dump ($m->getOption(Memcached::OPT_CONNECT_TIMEOUT) != 0); ini_set('memcached.default_consistent_hash', true); ini_set('memcached.default_binary_protocol', true); ini_set('memcached.default_connect_timeout', 1212); $m = new Memcached(); var_dump ($m->getOption(Memcached::OPT_DISTRIBUTION) == Memcached::DISTRIBUTION_CONSISTENT); var_dump ($m->getOption(Memcached::OPT_BINARY_PROTOCOL) == true); var_dump ($m->getOption(Memcached::OPT_CONNECT_TIMEOUT) == 1212); echo "OK"; ?> --EXPECT-- bool(true) bool(true) bool(true) bool(true) bool(true) bool(true) OK PK[]V}u tests/keys_ascii.phptnu[--TEST-- Test valid and invalid keys - ascii --SKIPIF-- --FILE-- false, Memcached::OPT_VERIFY_KEY => false )); // libmemcached can verify keys, but these are tests are for our own // function s_memc_valid_key_ascii, so explicitly disable the checks // that libmemcached can perform. echo 'ASCII: SPACES' . PHP_EOL; var_dump ($ascii->set ('ascii key with spaces', 'this is a test')); var_dump ($ascii->getResultCode () == Memcached::RES_BAD_KEY_PROVIDED); echo 'ASCII: NEWLINE' . PHP_EOL; var_dump ($ascii->set ('asciikeywithnewline' . PHP_EOL, 'this is a test')); var_dump ($ascii->getResultCode () == Memcached::RES_BAD_KEY_PROVIDED); echo 'ASCII: EMPTY' . PHP_EOL; var_dump ($ascii->set (''/*empty key*/, 'this is a test')); var_dump ($ascii->getResultCode () == Memcached::RES_BAD_KEY_PROVIDED); echo 'ASCII: TOO LONG' . PHP_EOL; var_dump ($ascii->set (str_repeat ('1234567890', 512), 'this is a test')); var_dump ($ascii->getResultCode () == Memcached::RES_BAD_KEY_PROVIDED); echo 'ASCII: GET' . PHP_EOL; for ($i=0;$i<32;$i++) { var_dump ($ascii->get ('asciikeywithnonprintablechar-' . chr($i) . '-here')); var_dump ($ascii->getResultCode () == Memcached::RES_BAD_KEY_PROVIDED); } echo 'ASCII: SET' . PHP_EOL; for ($i=0;$i<32;$i++) { var_dump ($ascii->set ('asciikeywithnonprintablechar-' . chr($i) . '-here', 'this is a test')); var_dump ($ascii->getResultCode () == Memcached::RES_BAD_KEY_PROVIDED); } echo 'OK' . PHP_EOL; --EXPECT-- ASCII: SPACES bool(false) bool(true) ASCII: NEWLINE bool(false) bool(true) ASCII: EMPTY bool(false) bool(true) ASCII: TOO LONG bool(false) bool(true) ASCII: GET bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) ASCII: SET bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) OK PK[]2& --FILE-- setOption(Memcached::OPT_PREFIX_KEY, "foo_"); var_dump($m1->isPristine()); $m1 = new Memcached('id1'); var_dump($m1->isPristine()); $m2 = new Memcached('id1'); var_dump($m2->isPristine()); // this change affects $m1 $m2->setOption(Memcached::OPT_PREFIX_KEY, "bar_"); $m3 = new Memcached('id2'); var_dump($m3->isPristine()); $m3 = new Memcached(); var_dump($m3->isPristine()); --EXPECT-- bool(true) bool(false) bool(false) bool(true) bool(true) PK[]_]aatests/getmulti.phptnu[--TEST-- Memcached::getMulti() --SKIPIF-- --FILE-- setMulti($data)); $keys = array_keys($data); $keys['last'] = new Foo(); $v = $m->getMulti($keys); var_dump(is_array($v)); var_dump($m->getResultCode() == Memcached::RES_SUCCESS); if (is_array($v)) { foreach ($v as $key => $value) { if (!isset($data[$key]) or $value !== $data[$key]) { echo "mismatch \$data['$key'] = \n"; var_dump($data[$key]); var_dump($value); } } } else { echo "Result not an array\n"; } var_dump(is_object($keys['last'])); --EXPECT-- bool(true) bool(true) bool(true) bool(true) PK[]mOtests/set_encoding_key2.phptnu[--TEST-- Test libmemcached encryption --SKIPIF-- = 0x01000018) die ("skip test for libmemcached lower than 1.0.18"); ?> --FILE-- setEncodingKey("Hello")); var_dump ($m->set ($key, 'set using encoding')); var_dump ($m->get ($key)); echo "OK" . PHP_EOL; # libmemcached < 1.0.18 goes into a bad state when the encoding key is changed, # so php-memcached warns and returns false when trying to change the key. var_dump ($m->setEncodingKey("World")); echo "OK" . PHP_EOL; ?> --EXPECTF-- bool(true) bool(true) string(18) "set using encoding" OK Warning: Memcached::setEncodingKey(): libmemcached versions less than 1.0.18 cannot change encoding key in %s on line %d bool(false) OK PK[] ~tests/session_lazy_warning.phptnu[--TEST-- Session lazy binary warning old libmemcached --SKIPIF-- = 0x01000018) die ('skip too recent libmemcached'); ?> --INI-- session.save_handler = memcached memcached.sess_binary_protocol = On --FILE-- TRUE]); $_SESSION['foo'] = 1; session_write_close(); $_SESSION = NULL; var_dump($_SESSION); session_start(); var_dump($_SESSION); session_write_close(); session_start(); session_destroy(); session_start(); var_dump($_SESSION); session_write_close(); --EXPECTF-- NULL array(1) { ["foo"]=> int(1) } Warning: session_write_close(): using touch command with binary protocol is not recommended with libmemcached versions below 1.0.18, please use ascii protocol or upgrade libmemcached in %s on line %d array(0) { } PK[]!KO4tests/types_igbinary.phptnu[--TEST-- Memcached store & fetch type and value correctness using igbinary serializer --SKIPIF-- --FILE-- --EXPECT-- TEST DONE PK[]M<tests/session_basic2.phptnu[--TEST-- Session basic open, write, destroy --SKIPIF-- --INI-- session.save_handler = memcached memcached.sess_binary_protocol = Off --FILE-- TRUE]); $_SESSION['foo'] = 1; session_write_close(); $_SESSION = NULL; var_dump($_SESSION); session_start(); var_dump($_SESSION); session_write_close(); session_start(); session_destroy(); session_start(); var_dump($_SESSION); session_write_close(); --EXPECT-- NULL array(1) { ["foo"]=> int(1) } array(0) { } PK[]tests/session_basic3.phptnu[--TEST-- Session basic open, write, destroy --SKIPIF-- --INI-- session.save_handler = memcached memcached.sess_binary_protocol = Off --FILE-- true ]); var_dump($_SESSION); session_write_close(); session_start(); session_destroy(); session_start(); var_dump($_SESSION); session_write_close(); --EXPECT-- NULL array(1) { ["foo"]=> int(1) } array(0) { } PK[]p#&Stests/multi_order.phptnu[--TEST-- Memcached GET_PRESERVE_ORDER flag in getMulti --SKIPIF-- --FILE-- addServer (MEMC_SERVER_HOST, MEMC_SERVER_PORT); $data = array( 'foo' => 'foo-data', 'bar' => 'bar-data', 'baz' => 'baz-data', 'lol' => 'lol-data', 'kek' => 'kek-data', ); //$m->setMulti($data, 3600); foreach ($data as $k => $v) { $m->set($k, $v, 3600); } $keys = array_keys($data); $keys[] = 'zoo'; $got = $m->getMulti($keys, Memcached::GET_PRESERVE_ORDER); foreach ($got as $k => $v) { echo "$k $v\n"; } ?> --EXPECT-- foo foo-data bar bar-data baz baz-data lol lol-data kek kek-data zoo PK[]tests/check_if_persistent.phptnu[--TEST-- Check if persistent object is persistent --SKIPIF-- --FILE-- setOption(Memcached::OPT_PREFIX_KEY, "foo_"); var_dump($m1->isPersistent()); $m1 = new Memcached('id1'); var_dump($m1->isPersistent()); $m2 = new Memcached('id1'); var_dump($m2->isPersistent()); // this change affects $m1 $m2->setOption(Memcached::OPT_PREFIX_KEY, "bar_"); $m3 = new Memcached('id2'); var_dump($m3->isPersistent()); $m3 = new Memcached(); var_dump($m3->isPersistent()); // objects have the same resource, but they are not the same object. var_dump($m1 === $m2); var_dump($m1->getOption(Memcached::OPT_PREFIX_KEY)); --EXPECT-- bool(true) bool(true) bool(true) bool(true) bool(false) bool(false) string(4) "bar_" PK[]X`  tests/version.phptnu[--TEST-- Get version --SKIPIF-- --FILE-- getVersion ()); echo "OK" . PHP_EOL; ?> --EXPECTF-- array(1) { ["%s:%d"]=> string(%d) "%d.%d.%d" } OK PK[]tests/cas.phptnu[--TEST-- Memcached fetch cas & set cas --SKIPIF-- --FILE-- delete('cas_test'); $m->set('cas_test', 'hello'); $cas_token = $m->get('cas_test', null, Memcached::GET_EXTENDED)['cas']; $v = $m->cas($cas_token, 'cas_test', 0); if ($v != true) { echo "CAS failed"; } echo "OK\n"; ?> --EXPECT-- OKPK[]XFtests/get_flags.phptnu[--TEST-- Memcached::get/getMulti() flags --SKIPIF-- --FILE-- set ($key1, 'hello1', 20); $m->set ($key2, 'hello2', 20); $value = $m->get($key1); $extended = $m->get($key1, null, Memcached::GET_EXTENDED); var_dump ($value); var_dump ($extended); $values = $m->getMulti(array ($key1, $key2), Memcached::GET_PRESERVE_ORDER); $extended = $m->getMulti(array ($key1, $key2), Memcached::GET_EXTENDED | Memcached::GET_PRESERVE_ORDER); var_dump ($values); var_dump ($extended); echo "OK"; --EXPECTF-- string(6) "hello1" array(3) { ["value"]=> string(6) "hello1" ["cas"]=> int(%d) ["flags"]=> int(0) } array(2) { ["memc.test.%s"]=> string(6) "hello1" ["memc.test.%s"]=> string(6) "hello2" } array(2) { ["memc.test.%s"]=> array(3) { ["value"]=> string(6) "hello1" ["cas"]=> int(%d) ["flags"]=> int(0) } ["memc.test.%s"]=> array(3) { ["value"]=> string(6) "hello2" ["cas"]=> int(%d) ["flags"]=> int(0) } } OKPK[] |tests/bad_construct.phptnu[--TEST-- Memcached construct with bad arguments --SKIPIF-- --FILE-- setOption (Memcached::OPT_BINARY_PROTOCOL, true)); echo "OK" . PHP_EOL; --EXPECTF-- Warning: Memcached::__construct() expects parameter 1 to be string, object given in %s on line 3 Memcached::__construct() expects parameter 1 to be string, object given object(Memcached)#1 (0) { } Warning: Memcached::setOption(): Memcached constructor was not called in %s on line 14 NULL OK PK[]#tests/incrdecr_bykey.phptnu[--TEST-- Memcached::incrementByKey() Memcached::decrementByKey() --SKIPIF-- --FILE-- delete('foo'); var_dump($m->incrementByKey('foo', 'foo', 1)); var_dump($m->decrementByKey('foo', 'foo', 1)); var_dump($m->get('foo')); echo "Normal\n"; $m->set('foo', 1); var_dump($m->get('foo')); $m->incrementByKey('foo', 'foo'); var_dump($m->get('foo')); $m->incrementByKey('foo', 'foo', 2); var_dump($m->get('foo')); $m->decrementByKey('foo', 'foo'); var_dump($m->get('foo')); $m->decrementByKey('foo', 'foo', 2); var_dump($m->get('foo')); error_reporting(0); echo "Negative offset\n"; error_clear_last(); $m->incrementByKey('foo', 'foo', -1); echo error_get_last()["message"], "\n"; var_dump($m->get('foo')); error_clear_last(); $m->decrementByKey('foo', 'foo', -1); echo error_get_last()["message"], "\n"; var_dump($m->get('foo')); echo "Enormous offset\n"; $m->incrementByKey('foo', 'foo', 0x7f000000); var_dump($m->get('foo')); $m->decrementByKey('foo', 'foo', 0x7f000000); var_dump($m->get('foo')); --EXPECT-- Not there bool(false) bool(false) bool(false) Normal int(1) int(2) int(4) int(3) int(1) Negative offset Memcached::incrementByKey(): offset cannot be a negative value int(1) Memcached::decrementByKey(): offset cannot be a negative value int(1) Enormous offset int(2130706433) int(1) PK[]:+tests/callback_exception.phptnu[--TEST-- make sure that callback exception behaves correctly --SKIPIF-- --FILE-- --EXPECT-- success success empty_cb called success OK PK[]cctests/touch_binary.phptnu[--TEST-- Touch in binary mode --SKIPIF-- --FILE-- getConstants (); foreach ($c as $name => $value) { if (strpos ($name, 'RES_') === 0 && $value == $code) return $name; } } function status_print ($op, $mem, $expected) { $code = $mem->getResultcode(); if ($code == $expected) echo "${op} status code as expected" . PHP_EOL; else { $expected = resolve_to_constant ($expected); $code = resolve_to_constant ($code); echo "${op} status code mismatch, expected ${expected} but got ${code}" . PHP_EOL; } } include dirname (__FILE__) . '/config.inc'; $mem = memc_get_instance (array (Memcached::OPT_BINARY_PROTOCOL => true)); $key = uniqid ('touch_t_'); $mem->get($key); status_print ('get', $mem, Memcached::RES_NOTFOUND); $mem->set ($key, 1); status_print ('set', $mem, Memcached::RES_SUCCESS); $mem->get($key); status_print ('get', $mem, Memcached::RES_SUCCESS); $mem->touch ($key, 10); status_print ('touch', $mem, Memcached::RES_SUCCESS); $mem->get($key); status_print ('get', $mem, Memcached::RES_SUCCESS); $mem->get($key); status_print ('get', $mem, Memcached::RES_SUCCESS); echo "OK\n"; ?> --EXPECT-- get status code as expected set status code as expected get status code as expected touch status code as expected get status code as expected get status code as expected OK PK[]`  tests/keys_binary.phptnu[--TEST-- Test valid and invalid keys - binary --SKIPIF-- --FILE-- true, )); echo 'BINARY: SPACES' . PHP_EOL; var_dump ($binary->set ('binary key with spaces', 'this is a test')); var_dump ($binary->getResultCode () == Memcached::RES_SUCCESS); echo 'BINARY: NEWLINE' . PHP_EOL; var_dump ($binary->set ('binarykeywithnewline' . PHP_EOL, 'this is a test')); var_dump ($binary->getResultCode () == Memcached::RES_BAD_KEY_PROVIDED); echo 'BINARY: EMPTY' . PHP_EOL; var_dump ($binary->set (''/*empty key*/, 'this is a test')); var_dump ($binary->getResultCode () == Memcached::RES_BAD_KEY_PROVIDED); echo 'BINARY: TOO LONG' . PHP_EOL; var_dump ($binary->set (str_repeat ('1234567890', 512), 'this is a test')); var_dump ($binary->getResultCode () == Memcached::RES_BAD_KEY_PROVIDED); echo 'BINARY: GET' . PHP_EOL; // Only newline fails in binary mode (char 10) for ($i=0;$i<32;$i++) { $binary->delete ('binarykeywithnonprintablechar-' . chr($i) . '-here'); var_dump ($binary->get ('binarykeywithnonprintablechar-' . chr($i) . '-here')); var_dump ($binary->getResultCode () == Memcached::RES_BAD_KEY_PROVIDED); } echo 'BINARY: SET' . PHP_EOL; // Only newline fails in binary mode (char 10) for ($i=0;$i<32;$i++) { var_dump ($binary->set ('binarykeywithnonprintablechar-' . chr($i) . '-here', 'this is a test')); var_dump ($binary->getResultCode () == Memcached::RES_BAD_KEY_PROVIDED); $binary->delete ('binarykeywithnonprintablechar-' . chr($i) . '-here'); } echo 'OK' . PHP_EOL; --EXPECT-- BINARY: SPACES bool(true) bool(true) BINARY: NEWLINE bool(false) bool(true) BINARY: EMPTY bool(false) bool(true) BINARY: TOO LONG bool(false) bool(true) BINARY: GET bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(true) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) BINARY: SET bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(false) bool(true) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) bool(false) OK PK[] !rtests/getserverlist.phptnu[--TEST-- getServerList --SKIPIF-- --FILE-- array ( 'KEYHERE' => 'localhost', 11211, 3 ), ); $m = new memcached(); var_dump($m->getServerList()); $m->addServers($servers); var_dump($m->getServerList()); $m->addServers($servers); var_dump($m->getServerList()); $m = new memcached(); $m->addServer('127.0.0.1', 11211); var_dump($m->getServerList()); echo "OK"; ?> --EXPECT-- array(0) { } array(1) { [0]=> array(3) { ["host"]=> string(9) "localhost" ["port"]=> int(11211) ["type"]=> string(3) "TCP" } } array(2) { [0]=> array(3) { ["host"]=> string(9) "localhost" ["port"]=> int(11211) ["type"]=> string(3) "TCP" } [1]=> array(3) { ["host"]=> string(9) "localhost" ["port"]=> int(11211) ["type"]=> string(3) "TCP" } } array(1) { [0]=> array(3) { ["host"]=> string(9) "127.0.0.1" ["port"]=> int(11211) ["type"]=> string(3) "TCP" } } OKPK[]CZ  tests/user-flags.phptnu[--TEST-- Memcached user flags --SKIPIF-- --FILE-- get($key, null, Memcached::GET_EXTENDED)['flags']; } define ('FLAG_1', 1); define ('FLAG_2', 2); define ('FLAG_4', 4); define ('FLAG_32', 32); define ('FLAG_64', 64); define ('FLAG_TOO_LARGE', pow(2, 16)); include dirname (__FILE__) . '/config.inc'; $m = memc_get_instance (array (Memcached::OPT_BINARY_PROTOCOL => true)); $key = uniqid ('udf_test_'); // Set with flags off $m->set ($key, '1', 10); $v = $m->get($key, null, Memcached::GET_EXTENDED); var_dump($v); // Set flags on $m->setOption(Memcached::OPT_USER_FLAGS, FLAG_1); $m->set ($key, '1', 10); $m->get($key); check_flags(get_flags($m, $key), array(FLAG_1)); // Multiple flags $m->setOption(Memcached::OPT_USER_FLAGS, FLAG_1 | FLAG_2 | FLAG_4); $m->set ($key, '1', 10); $m->get($key); check_flags(get_flags($m, $key), array(FLAG_1, FLAG_2, FLAG_4)); // Even more flags $m->setOption(Memcached::OPT_USER_FLAGS, FLAG_1 | FLAG_2 | FLAG_4 | FLAG_32 | FLAG_64); $m->set ($key, '1', 10); $m->get($key); check_flags(get_flags($m, $key), array(FLAG_1, FLAG_2, FLAG_4, FLAG_32, FLAG_64)); // User flags with get multi $values = array( uniqid ('udf_test_multi_') => "first", uniqid ('udf_test_multi_') => "second", uniqid ('udf_test_multi_') => "third", ); $m->setOption(Memcached::OPT_USER_FLAGS, FLAG_2 | FLAG_4); $m->setMulti($values); $m->getMulti(array_keys($values)); $flags = $m->getMulti(array_keys($values), Memcached::GET_EXTENDED); foreach (array_keys($values) as $key) { check_flags($flags[$key]['flags'], array(FLAG_2, FLAG_4)); } // User flags with compression on $m->setOption(Memcached::OPT_USER_FLAGS, FLAG_1 | FLAG_2 | FLAG_4); $m->setOption(Memcached::OPT_COMPRESSION, true); $m->setOption(Memcached::OPT_COMPRESSION_TYPE, Memcached::COMPRESSION_FASTLZ); $m->set ($key, '1', 10); $m->get($key); check_flags(get_flags($m, $key), array(FLAG_1, FLAG_2, FLAG_4)); // Too large flags $m->setOption(Memcached::OPT_USER_FLAGS, FLAG_TOO_LARGE); echo "DONE TEST\n"; ?> --EXPECTF-- array(3) { ["value"]=> string(1) "1" ["cas"]=> int(%d) ["flags"]=> int(0) } Flags OK Flags OK Flags OK Flags OK Flags OK Flags OK Flags OK Warning: Memcached::setOption(): MEMC_OPT_USER_FLAGS must be < 65535 in %s on line %d DONE TESTPK[]AW``tests/deletemulti.phptnu[--TEST-- Delete multi --SKIPIF-- --FILE-- 'foo-data', 'bar' => 'bar-data', 'baz' => 'baz-data', 'lol' => 'lol-data', 'kek' => 'kek-data', ); $keys = array_keys($data); $null = null; $m->setMulti($data, 3600); /* Check that all keys were stored */ var_dump(has_all_keys($keys, $m->getMulti($keys))); /* Check that all keys get deleted */ $deleted = $m->deleteMulti($keys); var_dump(has_all_keys($keys, $deleted, true)); /* Try to get the deleted keys, should give empty array */ var_dump($m->getMulti($keys)); /* ---- same tests for byKey variants ---- */ $m->setMultiByKey("hi", $data, 3600); var_dump(has_all_keys($keys, $m->getMultiByKey('hi', $keys))); /* Check that all keys get deleted */ $deleted = $m->deleteMultiByKey('hi', $keys); var_dump(has_all_keys($keys, $deleted, true)); /* Try to get the deleted keys, should give empty array */ var_dump($m->getMultiByKey('hi', $keys)); /* Test deleting non-existent keys */ $keys = array(); $keys[] = "nothere"; $keys[] = "nothere2"; $retval = $m->deleteMulti($keys); foreach ($retval as $key => $value) { if ($value === Memcached::RES_NOTFOUND) { echo "$key NOT FOUND\n"; } } ?> --EXPECT-- bool(true) bool(true) array(0) { } bool(true) bool(true) array(0) { } nothere NOT FOUND nothere2 NOT FOUNDPK[]b'"tests/session_badconf_servers.phptnu[--TEST-- Session bad configurations, invalid save path (server list) --SKIPIF-- 70100) print "skip"; ?> --INI-- session.save_handler = memcached --FILE-- --FILE-- --EXPECT-- Memcached PK[]_rbtests/callback_exception_2.phptnu[--TEST-- Callback initializer throws and dies --SKIPIF-- --FILE-- isPersistent()); throw new RuntimeException('Cb exception'); } function init_cb_die($m, $id) { echo "ran quitting cb\n"; die("quit in cb"); } error_reporting(0); echo "cb with exception\n"; try { $m1 = new Memcached(null, 'init_cb'); } catch (RuntimeException $e) { echo $e->getMessage(), "\n"; } echo "cb persistent with exception\n"; try { $m2 = new Memcached('foo', 'init_cb'); } catch (RuntimeException $e) { echo $e->getMessage(), "\n"; } echo "cb persistent dies\n"; try { $m3 = new Memcached('bar', 'init_cb_die'); } catch (RuntimeException $e) { echo $e->getMessage(), "\n"; } echo "not run\n"; --EXPECT-- cb with exception ran throwing cb bool(false) Cb exception cb persistent with exception ran throwing cb bool(true) Cb exception cb persistent dies ran quitting cb quit in cb PK[] zALtests/cas_multi.phptnu[--TEST-- Memcached multi fetch cas & set cas --SKIPIF-- --FILE-- 1, 'cas_test_2' => 2, ); foreach ($data as $key => $v) { $m->delete($key); } $m->setMulti($data, 10); $actual = $m->getMulti(array_keys($data), Memcached::GET_EXTENDED); foreach ($actual as $key => $v) { if (is_null($v['cas'])) { echo "missing cas token(s)\n"; echo "data: "; var_dump($data); echo "actual data: "; var_dump($actual); return; } $v = $m->cas($v['cas'], $key, 11); if (!$v) { echo "Error setting key: $key value: 11 with CAS: ", $v['cas'], "\n"; return; } $v = $m->get($key); if ($v !== 11) { echo "Wanted $key to be 11, value is: "; var_dump($v); return; } } if (array_keys($actual) !== array_keys($data)) { echo "missing value(s)\n"; echo "data :"; var_dump($data); echo "actual data: "; var_dump($actual); return; } echo "OK\n"; ?> --EXPECT-- OKPK[]nntests/incrdecr_initial.phptnu[--TEST-- Memcached::increment() Memcached::decrement() with initial support --SKIPIF-- --FILE-- true )); $m->delete('foo'); var_dump($m->increment('foo', 1, 1)); var_dump($m->increment('foo', 0)); $m->delete('foo'); var_dump($m->increment('foo', 1, 1)); var_dump($m->increment('foo', 1, 1)); var_dump($m->increment('foo', 1, 1)); var_dump($m->decrement('foo', 1, 1)); var_dump($m->decrement('foo', 0)); $m->delete('foo'); $m->deleteByKey('foo', 'foo'); var_dump($m->incrementByKey('foo', 'foo', 1, 1)); var_dump($m->incrementByKey('foo', 'foo', 0)); $m->deleteByKey('foo', 'foo'); var_dump($m->incrementByKey('foo', 'foo', 1, 1)); var_dump($m->incrementByKey('foo', 'foo', 1, 1)); var_dump($m->incrementByKey('foo', 'foo', 1, 1)); var_dump($m->decrementByKey('foo', 'foo', 1, 1)); var_dump($m->decrementByKey('foo', 'foo', 0)); $m->deleteByKey('foo', 'foo'); --EXPECT-- int(1) int(1) int(1) int(2) int(3) int(2) int(2) int(1) int(1) int(1) int(2) int(3) int(2) int(2) PK[]R|ыtests/types_igbinary_multi.phptnu[--TEST-- Memcached multi store & multi fetch type and value correctness using igbinary serializer --SKIPIF-- --FILE-- --EXPECT-- TEST DONE PK[]͙ctests/types_msgpack.phptnu[--TEST-- Memcached store & fetch type and value correctness using msgpack serializer --SKIPIF-- --FILE-- --EXPECT-- TEST DONE PK[]|\\tests/types_php.phptnu[--TEST-- Memcached store & fetch type and value correctness using PHP serializer --SKIPIF-- --FILE-- --EXPECT-- TEST DONE PK[]~5itests/session_basic.phptnu[--TEST-- Session basic open, write, destroy --SKIPIF-- --INI-- session.save_handler = memcached memcached.sess_binary_protocol = Off --FILE-- int(1) } array(0) { } PK[]3S=tests/skipif.incnu[ --FILE-- delete($first_key); $m->delete($second_key); $m->delete($third_key); var_dump ( $m->get ($first_key, function (Memcached $memc, $key, &$value, &$expiration) { $value = "hello"; $expiration = 10; return true; }) ); var_dump ($m->get ($first_key)); var_dump ( $m->get ($second_key, function (Memcached $memc, $key, &$value, &$expiration) { $value = "hello"; $expiration = 10; return false; }) ); var_dump ($m->get ($second_key)); try { $m->get ($third_key, function (Memcached $memc, $key, &$value, &$expiration) { $value = "hello"; $expiration = 10; throw new Exception ('this is a test'); return true; }); } catch (Exception $e) { echo 'Got exception' . PHP_EOL; } var_dump ($m->get ($third_key)); echo "OK" . PHP_EOL; --EXPECT-- string(5) "hello" string(5) "hello" bool(false) bool(false) Got exception bool(false) OKPK[]A3tests/stats_hang.phptnu[--TEST-- Check stats does not hang on non-blocking binary protocol --SKIPIF-- --FILE-- setOption(Memcached::OPT_NO_BLOCK, true); $m->setOption(Memcached::OPT_BINARY_PROTOCOL, true); $stats = $m->getStats(); $conns1 = $stats[$key]['total_connections']; $stats = $m->getStats(); $conns2 = $stats[$key]['total_connections']; var_dump($conns1 == $conns2); var_dump($m->getOption(Memcached::OPT_NO_BLOCK)); var_dump($m->getOption(Memcached::OPT_BINARY_PROTOCOL)); echo "OK" . PHP_EOL; // If either or both options are false no need to reconnect $m->setOption(Memcached::OPT_NO_BLOCK, false); $m->setOption(Memcached::OPT_BINARY_PROTOCOL, true); $stats = $m->getStats(); $conns1 = $stats[$key]['total_connections']; $stats = $m->getStats(); $conns2 = $stats[$key]['total_connections']; var_dump($conns1 == $conns2); var_dump($m->getOption(Memcached::OPT_NO_BLOCK)); var_dump($m->getOption(Memcached::OPT_BINARY_PROTOCOL)); echo "OK" . PHP_EOL; // If either or both options are false no need to reconnect $m->setOption(Memcached::OPT_NO_BLOCK, true); $m->setOption(Memcached::OPT_BINARY_PROTOCOL, false); $stats = $m->getStats(); $conns1 = $stats[$key]['total_connections']; $stats = $m->getStats(); $conns2 = $stats[$key]['total_connections']; var_dump($conns1 == $conns2); var_dump($m->getOption(Memcached::OPT_NO_BLOCK)); var_dump($m->getOption(Memcached::OPT_BINARY_PROTOCOL)); echo "OK" . PHP_EOL; // If either or both options are false no need to reconnect $m->setOption(Memcached::OPT_NO_BLOCK, false); $m->setOption(Memcached::OPT_BINARY_PROTOCOL, false); $stats = $m->getStats(); $conns1 = $stats[$key]['total_connections']; $stats = $m->getStats(); $conns2 = $stats[$key]['total_connections']; var_dump($conns1 == $conns2); var_dump($m->getOption(Memcached::OPT_NO_BLOCK)); var_dump($m->getOption(Memcached::OPT_BINARY_PROTOCOL)); echo "OK" . PHP_EOL; ?> --EXPECT-- bool(false) int(1) int(1) OK bool(true) int(0) int(1) OK bool(true) int(1) int(0) OK bool(true) int(0) int(0) OK PK[]Tkktests/expire.phptnu[--TEST-- Memcached store, fetch & touch expired key --XFAIL-- https://code.google.com/p/memcached/issues/detail?id=275 --SKIPIF-- --FILE-- set($key, "foo", 2); $v = $m->get($key); if (!$set || $v != 'foo') { echo "Error setting key to \"foo\" with 2s expiry.\n"; return; } sleep(1); $res = $m->touch($key, 2); $v = $m->get($key); if(!$res || $v != 'foo') { echo "Error touching key for another 2s expiry.\n"; var_dump($res); var_dump($m->getResultMessage()); var_dump($v); return; } sleep(3); $v = $m->get($key); if ($v !== Memcached::GET_ERROR_RETURN_VALUE) { echo "Wanted:\n"; var_dump(Memcached::GET_ERROR_RETURN_VALUE); echo "from get of expired value. Got:\n"; var_dump($v); return; } echo "All OK" . PHP_EOL; } $m = memc_get_instance (array ( Memcached::OPT_BINARY_PROTOCOL => true )); echo '-- binary protocol' . PHP_EOL; run_expiry_test ($m); $m = memc_get_instance (); echo '-- text protocol' . PHP_EOL; run_expiry_test ($m); echo "DONE TEST\n"; ?> --EXPECT-- -- binary protocol All OK -- text protocol All OK DONE TEST PK[]{6f""tests/gh_90.phptnu[--TEST-- Test for GH #90 --SKIPIF-- --FILE-- true )); // Create a key for use as a lock. If this key already exists, wait till it doesn't exist. { $key = 'LockKey'; $lockToken = mt_rand(0, mt_getrandmax()); //Random value for ownership verification while (true) { $casToken = null; $data = $memcached->get($key, $casToken); if ($memcached->getResultCode() == Memcached::RES_NOTFOUND) { if ($memcached->add($key, $lockToken, 5)) { break; } } elseif ($data === false) { if ($memcached->cas($casToken, $key, $lockToken, 5)) { break; } } //Sleep 10 milliseconds usleep(10 * 1000); } } //Do something here that requires exclusive access to this key //Effectively delete our key lock. { $casToken = null; if ($lockToken == $memcached->get($key, $casToken)) { $memcached->cas($casToken, $key, false, 1); } } //Create 10 keys and then increment them. The first value returned will be wrong. { $keyList = array(); for ($i = 0; $i < 10; $i++) { $keyList[] = $i . '_' . uniqid ('count_value_'); } $valueList = array(); foreach ($keyList as $key) { $valueList[$key] = $memcached->increment($key, 1, 1); } var_dump ($valueList); } --EXPECTF-- array(10) { ["0_%s"]=> int(1) ["1_%s"]=> int(1) ["2_%s"]=> int(1) ["3_%s"]=> int(1) ["4_%s"]=> int(1) ["5_%s"]=> int(1) ["6_%s"]=> int(1) ["7_%s"]=> int(1) ["8_%s"]=> int(1) ["9_%s"]=> int(1) } PK[]gc_tests/deleted.phptnu[--TEST-- Memcached store & fetch type correctness --SKIPIF-- --FILE-- set('eisaleeoo', "foo"); $m->delete('eisaleeoo'); $v = $m->get('eisaleeoo'); if ($v !== Memcached::GET_ERROR_RETURN_VALUE) { echo "Wanted: "; var_dump(Memcached::GET_ERROR_RETURN_VALUE); echo "Got: "; var_dump($v); } echo "OK\n"; ?> --EXPECT-- OKPK[]2o!!tests/flush_buffers.phptnu[--TEST-- Test flushing buffers --SKIPIF-- --FILE-- 1, Memcached::OPT_BUFFER_WRITES => 1, )); $key = uniqid ('flush_key_'); var_dump ($m->set($key, 'test_val')); $m2 = memc_get_instance (); var_dump ($m2->get ($key)); var_dump ($m->flushBuffers ()); sleep (1); var_dump ($m2->get ($key)); echo "OK" . PHP_EOL; ?> --EXPECT-- bool(true) bool(false) bool(true) string(8) "test_val" OKPK[]*xpBBtests/localserver.phptnu[--TEST-- Memcached local server test --SKIPIF-- --FILE-- set($key, array( 'foo' => 'bar' ), 360); var_dump($m->get($key)); ?> --EXPECT-- array(1) { ["foo"]=> string(3) "bar" } PK[]ה]ԋtests/append.phptnu[--TEST-- Memcached::append() --SKIPIF-- --FILE-- delete('foo'); $m->setOption(Memcached::OPT_COMPRESSION, true); var_dump($m->append('foo', 'a')); echo error_get_last()["message"], "\n"; $m->setOption(Memcached::OPT_COMPRESSION, false); $m->delete('foo'); var_dump($m->append('foo', 'a')); var_dump($m->get('foo')); $m->set('foo', 'a'); var_dump($m->append('foo', 'b')); var_dump($m->get('foo')); --EXPECTF-- NULL %s: cannot append/prepend with compression turned on bool(false) bool(false) bool(true) string(2) "ab" PK[]_DDtests/gh_77.phptnu[--TEST-- Test for Github issue #77 --SKIPIF-- --FILE-- touch($key, 5); var_dump ($mc->getResultCode() == Memcached::RES_NOTFOUND); $mc->set($key, 1, 5); $mc->set($key, 1, 5); var_dump ($mc->getResultCode() == Memcached::RES_SUCCESS); echo "OK\n"; ?> --EXPECT-- bool(true) bool(true) OK PK[]\uu&tests/session_badconf_emptyprefix.phptnu[--TEST-- Session bad configurations, prefix --SKIPIF-- --INI-- memcached.sess_locking = on memcached.sess_prefix = "memc.sess.key." session.save_handler = "memcached" --FILE-- --FILE-- true )); $client->set('key1', 'value1'); echo "set result code: ".$client->getResultCode()."\n"; $value = $client->get('key1'); echo "got $value with result code: ".$client->getResultCode()."\n"; var_dump ($client->add('key2', 'value2')); echo "add result code: ".$client->getResultCode()."\n"; echo "OK\n"; ?> --EXPECT-- set result code: 0 got value1 with result code: 0 bool(true) add result code: 0 OKPK[]"f  tests/rescode.phptnu[--TEST-- Memcached result codes. --SKIPIF-- --FILE-- getResultMessage(), "\n"; $m->addServer(MEMC_SERVER_HOST, MEMC_SERVER_PORT, 1); echo $m->getResultCode(), "\n"; echo $m->getResultMessage(), "\n"; $m->set('bar_foo', 10); echo $m->getResultMessage(), "\n"; $m->delete('bar_foo'); echo $m->getResultMessage(), "\n"; $m->delete('bar_foo'); echo $m->getResultCode(), "\n"; echo $m->getResultMessage(), "\n"; $m->set ('asdf_a', 'aa'); $m->getMulti(array('asdf_a', 'jkhjkhjkb', 'nbahsdgc')); echo $m->getResultMessage(), "\n"; $code = $m->getResultCode(); $m2 = new Memcached(); $m2->getMulti(array('asdf_a', 'jkhjkhjkb', 'nbahsdgc')); echo $m2->getResultCode(), "\n"; echo $m2->getResultMessage(), "\n"; $m2->addServer('127.0.0.1', 7312, 1); echo $m2->getResultCode(), "\n"; echo $m2->getResultMessage(), "\n"; $m2->delete('bar_foo'); echo $m2->getResultCode(), "\n"; echo $m2->getResultMessage(), "\n"; var_dump($m->getResultCode() == $code); $m = memc_get_instance (array (), 'test1'); $m2 = new Memcached('test1'); $m->delete('moikkamitakuuluu'); echo $m->getResultMessage(), "\n"; $m2->set('minapaasetannih', 10, 1); echo $m->getResultMessage(), "\n"; echo $m2->getResultMessage(), "\n"; $m->delete('bar_foo'); // clearly "NOT FOUND" $m->delete('bar_foo'); $res_m = $m->getResultMessage(); echo $res_m, "\n"; $m2->set('bar_foo', 10); echo $m->getResultMessage(), "\n"; echo $m2->getResultMessage(), "\n"; $m->delete('bar_foo'); echo $m->getResultMessage(), "\n"; ?> --EXPECTF-- SUCCESS %d SUCCESS SUCCESS SUCCESS %d NOT FOUND SUCCESS %d NO SERVERS DEFINED %d SUCCESS %d %rSYSTEM ERROR|WRITE FAILURE|CONNECTION FAILURE%r bool(true) NOT FOUND NOT FOUND SUCCESS NOT FOUND NOT FOUND SUCCESS SUCCESS PK[]Eddtests/invalid_options.phptnu[--TEST-- Get version --SKIPIF-- --FILE-- setOption(500, 23423); var_dump ($m->getResultCode ()); echo "OK" . PHP_EOL; ?> --EXPECTF-- Warning: Memcached::setOption(): error setting memcached option: INVALID ARGUMENTS in %s on line %d int(38) OKPK[]ճtests/no-not-found.phptnu[--TEST-- Test that correct return value is returned --SKIPIF-- --FILE-- addServer('localhost', 5555); // Server should not exist $result = $memcached->get('foo_not_exists'); var_dump ($result === Memcached::GET_ERROR_RETURN_VALUE); $result = $memcached->get('foo_not_exists'); var_dump ($result === Memcached::GET_ERROR_RETURN_VALUE); echo "OK\n"; ?> --EXPECT-- bool(true) bool(true) OK PK[]ݫ(tests/session_badconf_servers-php72.phptnu[--TEST-- Session bad configurations, invalid save path (server list) --SKIPIF-- --INI-- session.save_handler = memcached --FILE-- --FILE-- delete('foo'); var_dump($m->increment('foo', 1)); var_dump($m->getResultCode()); var_dump($m->decrement('foo', 1)); var_dump($m->getResultCode()); var_dump($m->get('foo')); var_dump($m->getResultCode()); echo "Normal\n"; $m->set('foo', 1); var_dump($m->get('foo')); $m->increment('foo'); var_dump($m->get('foo')); $m->increment('foo', 2); var_dump($m->get('foo')); $m->decrement('foo'); var_dump($m->get('foo')); $m->decrement('foo', 2); var_dump($m->get('foo')); error_reporting(0); echo "Negative offset\n"; error_clear_last(); $m->increment('foo', -1); echo error_get_last()["message"], "\n"; var_dump($m->get('foo')); error_clear_last(); $m->decrement('foo', -1); echo error_get_last()["message"], "\n"; var_dump($m->get('foo')); echo "Enormous offset\n"; $m->increment('foo', 0x7f000000); var_dump($m->get('foo')); $m->decrement('foo', 0x7f000000); var_dump($m->get('foo')); --EXPECT-- Not there bool(false) int(16) bool(false) int(16) bool(false) int(16) Normal int(1) int(2) int(4) int(3) int(1) Negative offset Memcached::increment(): offset cannot be a negative value int(1) Memcached::decrement(): offset cannot be a negative value int(1) Enormous offset int(2130706433) int(1) PK[],rtests/invoke_callback_2.phptnu[--TEST-- Use callback initializer --SKIPIF-- --FILE-- isPersistent()); var_dump($id); } function init_cb_fail($m, $id) { echo "configured, should not be called.\n"; } function init_cb_arg($m, $id) { var_dump(func_num_args()); var_dump($id); } function init_nopersist_cb($m, $id) { var_dump($m->isPersistent()); var_dump($id); } class Foo extends Memcached { function __construct($id = null) { parent::__construct($id, array($this, 'init')); } function init($obj, $id) { var_dump(func_num_args()); var_dump($this->isPristine()); var_dump($this->isPersistent()); var_dump($id); } } echo "cb call\n"; $m1 = new Memcached('foo1', 'init_cb'); echo "cb not run\n"; $m1 = new Memcached('foo1', 'init_cb_fail'); echo "cb arg without arg\n"; $m1 = new Memcached('foo3', 'init_cb_arg'); echo "cb arg not persistent\n"; $m1 = new Memcached(null, 'init_nopersist_cb'); echo "cb in object\n"; $m1 = new Foo(); echo "cb persistent in object\n"; $m1 = new Foo('baz'); echo "cb second persistent in object\n"; $m1 = new Foo('baz'); ?> --EXPECT-- cb call string(9) "Memcached" bool(true) string(4) "foo1" cb not run cb arg without arg int(2) string(4) "foo3" cb arg not persistent bool(false) NULL cb in object int(2) bool(true) bool(false) NULL cb persistent in object int(2) bool(true) bool(true) string(3) "baz" cb second persistent in object PK[]ftests/types_json.phptnu[--TEST-- Memcached store & fetch type and value correctness using JSON serializer --SKIPIF-- --FILE-- --EXPECT-- TEST DONE PK[]R  tests/reset_keyprefix.phptnu[--TEST-- Cannot reset OPT_PREFIX_KEY #293 --SKIPIF-- --FILE-- set('key1', 'abc'); var_dump($m->get('key1')); $m->setOption(Memcached::OPT_PREFIX_KEY, 'prefix'); var_dump($m->get('key1')); $m->setOption(Memcached::OPT_PREFIX_KEY, false); var_dump($m->get('key1')); $m->setOption(Memcached::OPT_PREFIX_KEY, 'prefix'); var_dump($m->get('key1')); $m->setOption(Memcached::OPT_PREFIX_KEY, ''); var_dump($m->get('key1')); $m->setOption(Memcached::OPT_PREFIX_KEY, 'prefix'); var_dump($m->get('key1')); $m->setOption(Memcached::OPT_PREFIX_KEY, null); var_dump($m->get('key1')); --EXPECTF-- string(3) "abc" bool(false) string(3) "abc" bool(false) string(3) "abc" bool(false) string(3) "abc"PK[]ee tests/invoke_callback_twice.phptnu[--TEST-- Test that callback is invoked on new object only once --SKIPIF-- --FILE-- --FILE-- 'php' ), 'id1'); $m1->set('foo', 'bar'); for ($i = 1000; $i > 0; $i--) { $m1 = new Memcached('id1'); $rv = $m1->get('foo'); if ($rv !== 'bar') { echo "Expected bar got:"; var_dump($rv); die(); } $prefix = $m1->getOption(Memcached::OPT_PREFIX_KEY); if ($prefix !== 'php') { echo "Expected prefix php got:"; var_dump($prefix); die(); } } echo "OK\n"; ?> --EXPECT-- OKPK[]tests/session_regenerate.phptnu[--TEST-- Session regenerate --SKIPIF-- --INI-- session.save_handler = memcached --FILE-- --FILE-- true, Memcached::OPT_PREFIX_KEY => 'prefix1', )); $memcache2 = memc_get_instance (array ( Memcached::OPT_BINARY_PROTOCOL => true, Memcached::OPT_PREFIX_KEY => 'prefix2', )); var_dump($memcache->getOption(Memcached::OPT_PREFIX_KEY)); var_dump($memcache->set('test', "val_prefix1", 120)); var_dump($memcache->get('test')); var_dump($memcache2->getOption(Memcached::OPT_PREFIX_KEY)); var_dump($memcache2->set('test', "val_prefix2", 120)); var_dump($memcache2->get('test')); var_dump($memcache->get('test')); --EXPECT-- string(7) "prefix1" bool(true) string(11) "val_prefix1" string(7) "prefix2" bool(true) string(11) "val_prefix2" string(11) "val_prefix1" PK[]ųtests/types_msgpack_multi.phptnu[--TEST-- Memcached multi store & fetch type and value correctness using msgpack serializer --SKIPIF-- --FILE-- --EXPECT-- TEST DONE PK[],Stests/bug_16084.phptnu[--TEST-- Memcached: Bug #16084 (Crash when addServers is called with an associative array) --SKIPIF-- --FILE-- array ( 'KEYHERE' => 'localhost', 11211, 3 ), ); $m = new memcached(); var_dump($m->addServers($servers)); $list = $m->getServerList(); var_dump ($list[0]["host"], $list[0]["port"]); echo "OK"; ?> --EXPECT-- bool(true) string(9) "localhost" int(11211) OK PK[]prpvvtests/session_persistent.phptnu[--TEST-- Session persistent --SKIPIF-- --INI-- session.save_handler=memcached memcached.sess_persistent=1 --FILE-- --EXPECT-- array(1) { ["test"]=> bool(true) } PK[]9DDtests/clone.phptnu[--TEST-- Test cloning --SKIPIF-- --FILE-- --INI-- session.save_handler = "memcached" session.save_path = "PERSISTENT=1 hello:11211,world:11211" --FILE-- "1","b" => "2","c" => "3")), array('object_dummy', new testclass()), ); foreach ($data as $key => $value) { $m->delete($key); } foreach ($data as $types) { $key = $types [0]; $value = $types [1]; $m->set($key, $value); $actual = $m->get($key); if ($value !== $actual) { if (is_object($actual)) { if ($options['ignore_object_type']) { $value = (object) (array) $value; if ($value == $actual) continue; } if ($value == $actual && get_class($value) == get_class($actual)) continue; } echo "=== {$key} ===\n"; echo "Expected: "; var_dump($value); echo "Actual: "; var_dump($actual); } } $m->flush(); if (($actual = $m->get(uniqid ('random_key_'))) !== false) { echo "Expected: null"; echo "Actual: " . gettype($actual); } } function memc_types_test_multi ($m, $options) { $data = array( 'boolean_true' => true, 'boolean_false' => false, 'string' => "just a string", 'string_empty' => "", 'string_large' => str_repeat ('abcdef0123456789', 500), 'integer_positive_integer' => 10, 'integer_negative_integer' => -10, 'integer_zero_integer' => 0, 'float_positive1' => 3.912131, 'float_positive2' => 1.2131E+52, 'float_negative' => -42.123312, 'float_zero' => 0.0, 'null' => null, 'array_empty' => array(), 'array' => array(1,2,3,"foo"), 'object_array_empty' => (object)array(), 'object_array' => (object)array('a' => 1, 'b' => 2, 'c' => 3), 'object_dummy' => new testclass(), ); foreach ($data as $key => $value) { $m->delete($key); } $m->setMulti($data); $actual = $m->getMulti(array_keys($data)); foreach ($data as $key => $value) { if ($value !== $actual[$key]) { if (is_object($value)) { if ($options['ignore_object_type']) { $value = (object) (array) $value; if ($value == $actual[$key]) continue; } if ($value == $actual[$key] && get_class($value) == get_class($actual[$key])) continue; } echo "=== $key ===\n"; echo "Expected: "; var_dump($value); echo "Actual: "; var_dump($actual[$key]); } } } PK[]ntests/bug_16959.phptnu[--TEST-- Memcached: Bug #16959 (getMulti + BINARY_PROTOCOL problem) --SKIPIF-- --FILE-- true )); $cache->set('key_0', 'value0'); $cache->set('key_0_additional', 'value0_additional'); // -------------- NORMAL echo "NORMAL\n"; $keys = array( 'key_0', 'key_0_additional' ); $values = $cache->getMulti($keys); echo $cache->getResultMessage(), "\n"; echo "Values:\n"; foreach ($values as $k => $v) { var_dump($k); var_dump($v); var_dump($values[$k]); } // --------------- REVERSED KEY ORDER echo "REVERSED KEY ORDER\n"; $keys = array( 'key_0_additional', 'key_0' ); $values = $cache->getMulti($keys); echo $cache->getResultMessage(), "\n"; echo "Values:\n"; foreach ($values as $k => $v) { var_dump($k); var_dump($v); var_dump($values[$k]); } --EXPECT-- NORMAL SUCCESS Values: string(5) "key_0" string(6) "value0" string(6) "value0" string(16) "key_0_additional" string(17) "value0_additional" string(17) "value0_additional" REVERSED KEY ORDER SUCCESS Values: string(16) "key_0_additional" string(17) "value0_additional" string(17) "value0_additional" string(5) "key_0" string(6) "value0" string(6) "value0" PK[]e tests/prepend.phptnu[--TEST-- Memcached::prepend() --SKIPIF-- --FILE-- delete('foo'); $m->setOption(Memcached::OPT_COMPRESSION, true); var_dump($m->prepend('foo', 'a')); $m->setOption(Memcached::OPT_COMPRESSION, false); $m->delete('foo'); var_dump($m->prepend('foo', 'a')); var_dump($m->get('foo')); $m->set('foo', 'a'); var_dump($m->prepend('foo', 'b')); var_dump($m->get('foo')); --EXPECTF-- Warning: Memcached::prepend(): cannot append/prepend with compression turned on in %s on line %d NULL bool(false) bool(false) bool(true) string(2) "ba" PK[]|gG!tests/session_badconf_prefix.phptnu[--TEST-- Session bad configurations, prefix --SKIPIF-- --INI-- session.save_handler = memcached --FILE-- --FILE-- --EXPECT-- TEST DONE PK[] tests/stats.phptnu[--TEST-- Check stats --SKIPIF-- --FILE-- getStats(); $key = MEMC_SERVER_HOST . ':' . MEMC_SERVER_PORT; var_dump (count ($stats) === 1); var_dump (isset ($stats[$key])); var_dump (count ($stats[$key]) > 0); var_dump (is_int ($stats[$key]['cmd_get'])); echo "OK"; ?> --EXPECT-- bool(true) bool(true) bool(true) bool(true) OK PK[]htests/getserverbykey.phptnu[--TEST-- Memcached::getServerByKey() --SKIPIF-- --FILE-- getServerByKey("a")); $m->addServer('localhost', 11211, 1); $m->addServer('localhost', 11212, 1); $m->addServer('localhost', 11213, 1); $m->addServer('localhost', 11214, 1); $m->addServer('localhost', 11215, 1); var_dump($m->getServerByKey("")); echo $m->getResultMessage(), "\n"; var_dump($m->getServerByKey("a")); var_dump($m->getServerByKey("b")); var_dump($m->getServerByKey("c")); var_dump($m->getServerByKey("d")); --EXPECTF-- bool(false) bool(false) A BAD KEY WAS PROVIDED/CHARACTERS OUT OF RANGE array(%d) { ["host"]=> string(%d) "%s" ["port"]=> int(%d) ["weight"]=> int(0) } array(%d) { ["host"]=> string(%d) "%s" ["port"]=> int(%d) ["weight"]=> int(0) } array(%d) { ["host"]=> string(%d) "%s" ["port"]=> int(%d) ["weight"]=> int(0) } array(%d) { ["host"]=> string(%d) "%s" ["port"]=> int(%d) ["weight"]=> int(0) } PK[]^(Eyytests/getdelayed.phptnu[--TEST-- Memcached getDelayed callback --SKIPIF-- --FILE-- 'foo-data', 'bar' => 'bar-data', 'baz' => 'baz-data', 'lol' => 'lol-data', 'kek' => 'kek-data', ); foreach ($data as $k => $v) { $m->set($k, $v, 3600); } function myfunc() { $datas = func_get_args(); if (isset($datas[1])) { var_dump($datas[1]); } } $m->getDelayed(array_keys($data), true, 'myfunc'); ?> --EXPECTF-- array(4) { ["key"]=> string(3) "foo" ["value"]=> string(8) "foo-data" ["cas"]=> int(%d) ["flags"]=> int(0) } array(4) { ["key"]=> string(3) "bar" ["value"]=> string(8) "bar-data" ["cas"]=> int(%d) ["flags"]=> int(0) } array(4) { ["key"]=> string(3) "baz" ["value"]=> string(8) "baz-data" ["cas"]=> int(%d) ["flags"]=> int(0) } array(4) { ["key"]=> string(3) "lol" ["value"]=> string(8) "lol-data" ["cas"]=> int(%d) ["flags"]=> int(0) } array(4) { ["key"]=> string(3) "kek" ["value"]=> string(8) "kek-data" ["cas"]=> int(%d) ["flags"]=> int(0) }PK[]Z$tests/compression_types.phptnu[--TEST-- Memcached compression test --SKIPIF-- --FILE-- setOption(Memcached::OPT_COMPRESSION, false); } else { $m->setOption(Memcached::OPT_COMPRESSION, true); $m->setOption(Memcached::OPT_COMPRESSION_TYPE, get_compression($set_compression)); } $m->set($key, $value, 1800); if (!$get_compression) { $m->setOption(Memcached::OPT_COMPRESSION, true); } else { $m->setOption(Memcached::OPT_COMPRESSION, true); $m->setOption(Memcached::OPT_COMPRESSION_TYPE, get_compression($get_compression)); } $value_back = $m->get($key); var_dump($value === $value_back); } fetch_with_compression($m, 'hello1', $data, 'zlib', 'zlib'); fetch_with_compression($m, 'hello2', $data, 'zlib', 'fastlz'); fetch_with_compression($m, 'hello3', $data, 'fastlz', 'fastlz'); fetch_with_compression($m, 'hello4', $data, 'fastlz', 'zlib'); fetch_with_compression($m, 'hello5', $data, '', 'zlib'); fetch_with_compression($m, 'hello6', $data, '', 'fastlz'); fetch_with_compression($m, 'hello7', $data, 'zlib', ''); fetch_with_compression($m, 'hello8', $data, 'fastlz', ''); fetch_with_compression($m, 'hello9', $data, '', ''); ?> --EXPECT-- set=[zlib] get=[zlib] bool(true) set=[zlib] get=[fastlz] bool(true) set=[fastlz] get=[fastlz] bool(true) set=[fastlz] get=[zlib] bool(true) set=[] get=[zlib] bool(true) set=[] get=[fastlz] bool(true) set=[zlib] get=[] bool(true) set=[fastlz] get=[] bool(true) set=[] get=[] bool(true) PK[]RUC#tests/session_badconf_locktime.phptnu[--TEST-- Session bad configurations, lock wait time --SKIPIF-- --INI-- memcached.sess_locking = on memcached.sess_lock_wait = -1 memcached.sess_prefix = "memc.sess.key." session.save_path="127.0.0.1:51312" session.save_handler = memcached --FILE-- --FILE-- --EXPECT-- memcached extension is available PK[]^H<''tests/incrdecr_64.phptnu[--TEST-- 64-bit Memcached::increment() decrement() incrementByKey() decrementByKey() --SKIPIF-- --FILE-- set('foo', 1); var_dump($m->get('foo')); echo "Enormous offset 64-bit\n"; $m->increment('foo', 0x100000000); var_dump($m->get('foo')); $m->decrement('foo', 0x100000000); var_dump($m->get('foo')); echo "Enormous offset 64-bit by key\n"; $m->incrementByKey('foo', 'foo', 0x100000000); var_dump($m->get('foo')); $m->decrementByKey('foo', 'foo', 0x100000000); var_dump($m->get('foo')); --EXPECT-- Normal int(1) Enormous offset 64-bit int(4294967297) int(1) Enormous offset 64-bit by key int(4294967297) int(1) PK[]d5tests/sasl_basic.phptnu[--TEST-- Test SASL authentication --SKIPIF-- --INI-- memcached.use_sasl = on --FILE-- true )); var_dump ($m->setSaslAuthData (MEMC_SASL_USER, MEMC_SASL_PASS)); $key = uniqid ('sasl_test_'); var_dump ($m->set ($key, 'set using sasl')); var_dump ($m->get ($key)); echo "OK" . PHP_EOL; ?> --EXPECT-- bool(true) bool(true) string(14) "set using sasl" OK PK[]e2VVtests/session_lock-php71.phptnu[--TEST-- Session lock --SKIPIF-- --INI-- memcached.sess_locking = true memcached.sess_lock_wait_min = 500 memcached.sess_lock_wait_max = 1000 memcached.sess_lock_retries = 3 memcached.sess_prefix = "memc.test." # Turn off binary protocol while the test matrix has older versions of # libmemcached for which the extension warns of a broken touch command. memcached.sess_binary_protocol = Off session.save_handler = memcached --FILE-- addServer(MEMC_SERVER_HOST, MEMC_SERVER_PORT); ob_start(); ini_set ('session.save_path', MEMC_SERVER_HOST . ':' . MEMC_SERVER_PORT); session_start(); $session_id = session_id(); $_SESSION["test"] = "hello"; session_write_close(); session_start(); var_dump ($m->get ('memc.test.' . session_id())); var_dump ($m->get ('memc.test.lock.' . session_id())); session_write_close(); var_dump ($m->get ('memc.test.lock.' . session_id())); // Test lock min / max $m->set ('memc.test.lock.' . $session_id, '1'); $time_start = microtime(true); session_start(); $time = microtime(true) - $time_start; if (round ($time, 1) != 2.5) { echo "Waited longer than expected: $time" . PHP_EOL; } echo "OK"; --EXPECTF-- string(17) "test|s:5:"hello";" string(1) "1" bool(false) Warning: session_start(): Unable to clear session lock record in %s on line %d Warning: session_start(): Failed to read session data: memcached (path: 127.0.0.1:11211) in %s on line %d OK PK[]()POtests/gh_155.phptnu[--TEST-- Test for bug 155 --SKIPIF-- --FILE-- setOption(Memcached::OPT_BINARY_PROTOCOL, true); $m->addServer(MEMC_SERVER_HOST, MEMC_SERVER_PORT); $key = 'bug_155_' . uniqid(); $m->set ($key, 'test', time() + 86400); $m->get ($key); echo "GET: " . $m->getResultMessage() . PHP_EOL; $m->touch ($key, time() + 86400); echo "TOUCH: " . $m->getResultMessage() . PHP_EOL; $m->touch ($key, time() + 86400); echo "TOUCH: " . $m->getResultMessage() . PHP_EOL; $m->get ($key); echo "GET: " . $m->getResultMessage() . PHP_EOL; $m->get ($key); echo "GET: " . $m->getResultMessage() . PHP_EOL; echo "DONE" . PHP_EOL; --EXPECT-- GET: SUCCESS TOUCH: SUCCESS TOUCH: SUCCESS GET: SUCCESS GET: SUCCESS DONE PK[]7_tests/config.incnu[setOptions ($opts) == false) echo "Failed to set options" . PHP_EOL; $memcached->addServer($host, $port); if ($memcached->flush() === false) { return NULL; } return $memcached; } function memc_get_instance (array $opts = array (), $persistent_id = null) { return memc_create_instance(MEMC_SERVER_HOST, MEMC_SERVER_PORT, $opts, $persistent_id); } function memc_get_sasl_instance (array $opts = array (), $persistent_id = null) { return memc_create_instance(MEMC_SASL_SERVER_HOST, MEMC_SASL_SERVER_PORT, $opts, $persistent_id); } function memc_run_test ($test_function, $options = array ()) { foreach ($options as $option_set) { $memc = memc_get_instance ($option_set ['options']); $test_function ($memc, $option_set); } echo "TEST DONE" . PHP_EOL; } function memc_create_combinations ($name, $serializer, $ignore_object_type = false) { return array ( array ( 'title' => "$name serializer, ascii protocol", 'options' => array ( Memcached::OPT_SERIALIZER => $serializer ), 'ignore_object_type' => $ignore_object_type ), array ( 'title' => "$name serializer, binary protocol", 'options' => array ( Memcached::OPT_BINARY_PROTOCOL => true, Memcached::OPT_SERIALIZER => $serializer ), 'ignore_object_type' => $ignore_object_type ), ); } function memc_get_version($memc) { $version = $memc->getVersion(); return array_pop($version); } PK[]QOOtests/set_large.phptnu[--TEST-- set large data --SKIPIF-- --FILE-- set($key, $value, 360)); var_dump($m->get($key) === $value); ?> --EXPECT-- bool(true) bool(true) PK[]^tests/invoke_callback.phptnu[--TEST-- Test that callback is invoked on new object --SKIPIF-- --FILE-- addServer(MEMC_SERVER_HOST, MEMC_SERVER_PORT); } $m = new Memcached('hi', 'my_func'); $m = new Memcached('hi', 'my_func'); var_dump($m->getServerList()); echo "OK\n"; --EXPECTF-- array(1) { [0]=> array(3) { ["host"]=> string(9) "%s" ["port"]=> int(%d) ["type"]=> string(3) "TCP" } } OK PK[]Hκtests/vbucket.phptnu[--TEST-- Memcached virtual buckets --SKIPIF-- --FILE-- Memcached::DISTRIBUTION_VIRTUAL_BUCKET )); var_dump ($m->setBucket (array (1, 2, 3), null, 2)); var_dump ($m->setBucket (array (1,2,2), array (1,2,2), 2)); var_dump ($m->setBucket (array ('a', 'b', 'c'), null, 2)); var_dump ($m->setBucket (array (), null, 2)); var_dump ($m->setBucket (array (), array (), -1)); var_dump ($m->setBucket (null, array (), -1)); var_dump ($m->setBucket (array (-1), array (-1), 1)); echo "OK\n"; ?> --EXPECTF-- bool(true) bool(true) bool(true) Warning: Memcached::setBucket(): server map cannot be empty in %s on line %d bool(false) Warning: Memcached::setBucket(): server map cannot be empty in %s on line %d bool(false) Warning: Memcached::setBucket() expects parameter 1 to be array, null given in %s on line %d NULL Warning: Memcached::setBucket(): the map must contain positive integers in %s on line %d bool(false) OK PK[]etests/bug_18639.phptnu[--TEST-- Memcached::getServerByKey(): Bug pecl#18639 (Segfault in getServerByKey) --SKIPIF-- --FILE-- set('test', 'test1')); var_dump($m->getServerByKey('1')); --EXPECTF-- bool(true) array(3) { ["host"]=> string(9) "%s" ["port"]=> int(%d) ["weight"]=> int(%r[01]%r) } PK[](!(UUtests/add.phptnu[--TEST-- Memcached::add() --SKIPIF-- --FILE-- delete('foo'); var_dump($m->add('foo', 1, 60)); var_dump($m->get('foo')); var_dump($m->add('foo', 2, 60)); var_dump($m->get('foo')); --EXPECT-- bool(true) int(1) bool(false) int(1) PK[]]tests/replace.phptnu[--TEST-- Memcached::replace() --SKIPIF-- --FILE-- delete('foo'); var_dump($m->replace('foo', 'bar', 60)); var_dump($m->get('foo')); $m->set('foo', 'kef'); var_dump($m->replace('foo', 'bar', 60)); var_dump($m->get('foo')); --EXPECT-- bool(false) bool(false) bool(true) string(3) "bar" PK[]..tests/incrdecr_invalid_key.phptnu[--TEST-- Memcached::increment() Memcached::decrement() with invalid key --SKIPIF-- --FILE-- increment('', 1)); var_dump($m->decrement('', 1)); ?> --EXPECT-- bool(false) bool(false) PK[]b  tests/testdata.resnu[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut malesuada purus vel diam congue condimentum. Vivamus diam erat, commodo eget lacinia venenatis, tempor at nulla. Praesent dapibus aliquam lectus. Aliquam erat volutpat. Praesent congue elementum ipsum, eu bibendum nisi ullamcorper nec. Aenean mattis metus quis libero hendrerit blandit accumsan nisi lacinia. Aenean varius sollicitudin nisl, tempor condimentum turpis congue id. Nunc vulputate purus non nunc dignissim tincidunt. Curabitur adipiscing est in ligula interdum a ultrices nibh ultricies. Aliquam a dapibus lectus. Ut eleifend, dui nec aliquam lobortis, quam est luctus lectus, nec hendrerit augue quam ac odio. Nam condimentum, ligula et rhoncus vulputate, lorem urna adipiscing mauris, non mollis velit arcu non urna. Donec sodales ultrices risus, sed hendrerit libero fringilla vitae. Maecenas magna nisl, vehicula scelerisque hendrerit id, fermentum at lorem. Curabitur eu nisl tincidunt arcu venenatis ultricies. Vivamus velit lorem, hendrerit non imperdiet sit amet, eleifend nec mauris. Donec eget condimentum purus. Cras sed lorem sagittis augue faucibus tincidunt. Pellentesque vitae lorem ac orci dignissim tempor. Maecenas diam elit, pulvinar sed gravida rutrum, ultrices vel mauris. In adipiscing placerat eros imperdiet euismod. Nunc quis ante non lectus dictum porta. Nullam orci felis, tristique ut posuere at, tempor sed eros. Pellentesque accumsan posuere magna eu condimentum. Phasellus adipiscing cursus fringilla. Donec diam ipsum, pharetra quis tempus sit amet, mollis in dolor. Pellentesque volutpat vestibulum nulla quis ultricies. Pellentesque scelerisque erat eu nulla ullamcorper tincidunt. Nullam commodo lobortis lacus, ac scelerisque diam dignissim eget. Cras eu metus sed tellus accumsan rutrum id ac nunc. Duis rutrum ipsum quis sapien dictum tincidunt. Duis gravida augue et sapien laoreet at pretium eros vulputate. Duis pulvinar lectus quis libero ultricies consequat a id felis. Morbi imperdiet venenatis ipsum eget ultricies. Vivamus fermentum urna sed massa tristique euismod. Pellentesque sed justo ut mi tincidunt luctus semper et elit. In hac habitasse platea dictumst. Praesent suscipit, elit quis fermentum luctus, magna dolor volutpat tellus, nec blandit nulla metus a lacus. Duis gravida, ipsum eu posuere congue, massa augue semper sapien, vel bibendum mi odio nec lectus. Vivamus lacinia urna vitae justo tincidunt dictum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc sed libero metus, in imperdiet nibh. Integer sapien mauris, pretium sed sodales at, blandit in lacus. Etiam a nisl semper enim pellentesque posuere vitae quis lectus. Etiam ut libero at tortor molestie feugiat non ut ligula. Suspendisse fermentum ipsum vel mauris aliquet convallis. Fusce velit turpis, sollicitudin sit amet luctus id, porta nec ipsum. Fusce consequat, risus vel congue sollicitudin, orci sem auctor nisl, eu consectetur neque tortor id neque. Nunc in odio velit. Duis vitae lacus elit, eu fringilla nulla. Phasellus non mi tellus, volutpat commodo lorem. Pellentesque vel ligula enim. Morbi suscipit, orci sed gravida convallis, nunc leo eleifend lacus, quis elementum dui mi nec risus. Mauris faucibus arcu scelerisque tellus semper dictum. Suspendisse vel posuere turpis. Curabitur ipsum ligula, auctor ut dignissim vel, scelerisque vel mauris. Vivamus est dolor, bibendum ac vestibulum a, congue id felis. Mauris rutrum pharetra tempus. Sed ornare congue purus, id adipiscing mi tincidunt at. Maecenas blandit, lorem in malesuada adipiscing, dolor arcu suscipit magna, ut mollis leo nibh non orci. Sed non massa ipsum, et lobortis tortor. Aliquam et egestas velit. Mauris ac sem eget elit imperdiet faucibus at non turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent vel dui vitae enim imperdiet sodales. Maecenas a tristique mauris. Praesent consectetur risus sit amet lacus dictum ut egestas nibh lacinia. Mauris quam augue, fringilla ac pretium a, consectetur sed risus. Sed ullamcorper eleifend dolor, id tempor arcu sodales at. Vestibulum eget sagittis libero. Cras ornare dui ac ante pretium fringilla. Morbi eu tincidunt felis. Vivamus ultrices diam in eros elementum luctus. Aenean eu neque nibh. Mauris neque est, euismod ut rutrum nec, vehicula at magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce sit amet neque ac justo pretium laoreet. Duis non sapien ut eros tristique porttitor vel et lacus. Donec molestie nunc malesuada ante porta ac pretium magna dictum. Nam dolor orci, lacinia egestas ornare eget, viverra et mi. Vivamus convallis lobortis dui, ac sagittis urna mattis sit amet. Duis interdum, est sed dignissim blandit, metus elit scelerisque mauris, sit amet egestas velit arcu quis nunc. PK[]e&tests/setmulti.phptnu[--TEST-- Memcached::setMulti() --SKIPIF-- --FILE-- deleteMulti($keys); echo "set keys: "; var_dump($m->setMulti($data, 10)); echo "get: "; $r = $m->getMulti($keys); var_dump($r); echo "Equal: "; var_dump($r === $data); --EXPECTF-- Data: array(%d) { ["foo"]=> string(3) "bar" [%i]=> string(7) "int-max" [%i]=> string(7) "int-min" [%i]=> string(7) "int-min" [0]=> string(4) "zero" [123]=> string(11) "onetwothree" [-123]=> string(14) "negonetwothree" } set keys: bool(true) get: array(%d) { ["foo"]=> string(3) "bar" [%i]=> string(7) "int-max" [%i]=> string(7) "int-min" [%i]=> string(7) "int-min" [0]=> string(4) "zero" [123]=> string(11) "onetwothree" [-123]=> string(14) "negonetwothree" } Equal: bool(true) PK[]kptests/gh_21.phptnu[--TEST-- Test for Github issue 21 --SKIPIF-- --FILE-- setOption(Memcached::OPT_BINARY_PROTOCOL, true); $m->addServers($newServers); $d = $m->get('foo'); $m->set('counter', 5); $n = $m->decrement('counter'); var_dump($n); $n = $m->decrement('counter', 10); var_dump($n); var_dump($m->get('counter')); $m->set('counter', 'abc'); $n = $m->increment('counter'); var_dump($n); ?> --EXPECT-- int(4) int(0) int(0) bool(false)PK[]MhP77tests/setoptions.phptnu[--TEST-- Set options using setOptions --SKIPIF-- --FILE-- setOptions(array( Memcached::OPT_PREFIX_KEY => 'a_prefix', Memcached::OPT_SERIALIZER => Memcached::SERIALIZER_PHP, Memcached::OPT_COMPRESSION => 0, Memcached::OPT_LIBKETAMA_COMPATIBLE => 1, Memcached::OPT_CONNECT_TIMEOUT => 5000, ))); var_dump($m->getOption(Memcached::OPT_PREFIX_KEY) == 'a_prefix'); var_dump($m->getOption(Memcached::OPT_SERIALIZER) == Memcached::SERIALIZER_PHP); var_dump($m->getOption(Memcached::OPT_COMPRESSION) == 0); var_dump($m->getOption(Memcached::OPT_LIBKETAMA_COMPATIBLE) == 1); echo "test invalid options\n"; var_dump($m->setOptions(array( "asdf" => 123 ))); var_dump($m->setOptions(array( -1 => 123 ))); --EXPECTF-- bool(true) bool(true) bool(true) bool(true) bool(true) test invalid options Warning: Memcached::setOptions(): invalid configuration option in %s on line %d bool(false) Warning: Memcached::setOptions(): error setting memcached option: %s in %s on line %d bool(false) PK[]wtests/undefined_set.phptnu[--TEST-- Set with undefined key and value --SKIPIF-- --FILE-- 'bar'); $rv = $m->set($no_key, $value, 360); var_dump($rv); $rv = $m->set($key, $no_value, 360); var_dump($rv); $rv = $m->set($no_key, $no_value, 360); var_dump($rv); $rv = $m->set($key, $value, $no_time); var_dump($rv); ?> --EXPECTF-- Notice: Undefined variable: no_key in %s bool(false) Notice: Undefined variable: no_value in %s bool(true) Notice: Undefined variable: no_key in %s Notice: Undefined variable: no_value in %s bool(false) Notice: Undefined variable: no_time in %s bool(true) PK[]>wbtests/session_lock.phptnu[PK[]33tests/construct_persistent.phptnu[PK[]iP__Atests/gh_93.phptnu[PK[]hhh tests/types_php_multi.phptnu[PK[]Ɂ33 tests/options.phptnu[PK[]Јtests/deletemultitypes.phptnu[PK[]X-7::tests/default_behavior.phptnu[PK[]V}u _tests/keys_ascii.phptnu[PK[]2&