setOption(Memcached::OPT_BINARY_PROTOCOL, FALSE); $mc->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_IGBINARY); $mc->setOption(Memcached::OPT_TCP_NODELAY, TRUE); $mc->setOption(Memcached::OPT_NO_BLOCK, TRUE); $mc->setOption(Memcached::OPT_BUFFER_WRITES, FALSE); $mc->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT); if (!empty($memcached_socket)) { $mc->addServer($memcached_socket, 0); $memcached_server = $memcached_socket; } else { $mc->addServer($memcached_host, $memcached_port); $memcached_server = $memcached_host . ":" . $memcached_port; } if(!$mc){ die('Memcached connection error.'); } echo "\n--Memcached server '" . $memcached_server . "' will be used\n\n"; $data = str_pad('', 1024, '0'); $msetData = []; for ($i=0; $i < 10000; $i++) { $msetData[$i%10]['bench_'.$i] = $data; } $start = microtime(1); $time = []; echo "Start testing.\r\n"; $mc->touch('bench_test', 1); recordTime('touch'); echo "1KB data set, 10000 times, starting... "; for ($i=0 ; $i< 10000 ; $i++) { $mc->set('bench_'.$i, $data); if($i % 100 != 0) continue; echo "\033[5D"; echo str_pad($i/100+1, 3, ' ', STR_PAD_LEFT) . " %"; } echo "\r\n"; recordTime('set'); echo "1KB data get, 10000 times, starting... "; for ($i=0 ; $i< 10000 ; $i++) { $mc->get('bench_'.$i); if($i % 100 != 0) continue; echo "\033[5D"; echo str_pad($i/100+1, 3, ' ', STR_PAD_LEFT) . " %"; } echo "\r\n"; recordTime('get'); echo "1KB data delete, 10000 times, starting... "; for ($i=0 ; $i< 10000 ; $i++) { $mc->delete('bench_'.$i); if($i % 100 != 0) continue; echo "\033[5D"; echo str_pad($i/100+1, 3, ' ', STR_PAD_LEFT) . " %"; } echo "\r\n"; recordTime('delete'); echo "1KB data, 1000 row setMulti, 10 times, starting... "; for ($i=0 ; $i< 10 ; $i++) { $mc->setMulti($msetData[$i]); echo "\033[5D"; echo str_pad($i*10+10, 3, ' ', STR_PAD_LEFT) . " %"; } echo "\r\n"; recordTime('setMulti'); echo "1KB data, 1000 row getMulti, 10 times, starting... "; for ($i=0 ; $i< 10 ; $i++) { $s = $mc->getMulti(array_keys($msetData[$i])); echo "\033[5D"; echo str_pad($i*10+10, 3, ' ', STR_PAD_LEFT) . " %"; } echo "\r\n"; recordTime('getMulti'); echo "1KB data, 1000 row deleteMulti, 10 times, starting... "; for ($i=0 ; $i< 10 ; $i++) { $s = $mc->deleteMulti(array_keys($msetData[$i])); echo "\033[5D"; echo str_pad($i*10+10, 3, ' ', STR_PAD_LEFT) . " %"; } echo "\r\n"; recordTime('deleteMulti'); print_r($time); function recordTime($action){ global $start; global $time; static $last; if(!$last) $last = $start; $time[$action] = number_format((microtime(1) - $last)*1000, 2); $last = microtime(1); }