Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Какой из клиентов использовали? И почему?
Какой используешь ты и почему?
Были какие то неявности, странности и баги, кроме приведения кодировок?Долго провозился с кодировками. Первое время думал что бага, отписал автору.
Решил эту проблему, только после применения нативного протокол через телнет. хотел выяснить, кто виноват: враппер, либа или ограничена возможность HS. Сперва думал, что это бага.
Ну, если быть откровенным, я часть функционала, связанного с memcached отлаживаю, используя телнет. Как-то Хабросообществом была недооценена моя статья, в которой я по шагам расписал, как я отлавливал багу в libmemcached. А вот по рассылкам php-hiload да и в самом Сообществе проскакивали похожие баги падения memcached. Так что хочу обратить внимание, что знание нативного протокола всегда помогает в отладке.
что осталось за кадром: тестируется функционал композитных ключей.
-
- <?php
- // connect
- $hs = new HandlerSocket('127.0.0.1', 9998);
- if($hs) {
- print 'Connected to HandlerSocket<br/>';
- } else {
- print 'Can not connect<br/>';
- die();
- }
- //index
- $index = $hs->openIndex(
- 1,
- 'mysql',
- 'user',
- HandlerSocket::PRIMARY,
- 'Host,User,Select_priv'
- );
- if($index) {
- print 'Index opened<br/>';
- } else {
- print 'Can not open index<br/>';
- echo $hs->getError(), PHP_EOL;
- die();
- }
- $id = rand(1,1000);
- // find
- //$result = $hs->executeSingle(1, '=', array($id), 1, 0);
-
- // Чтение данных Multi-Get (find по тому же индексу)
- $retval = $hs->executeMulti(
- array(
- array(1, '=', array('localhost'), 1, 0),
- array(1, '=', array('%'), 1, 0),
- array(1, '=', array('127.0.0.1'), 1, 0)
- )
- );
-
- var_dump($retval);
-
-
-
- Connected TO HandlerSocket<br/>Index opened<br/>array(3) {
- [0]=>
- array(1) {
- [0]=>
- array(3) {
- [0]=>
- string(9) "localhost"
- [1]=>
- string(16) "debian-sys-maint"
- [2]=>
- string(1) "Y"
- }
- }
- [1]=>
- array(1) {
- [0]=>
- array(3) {
- [0]=>
- string(1) "%"
- [1]=>
- string(6) "daobay"
- [2]=>
- string(1) "Y"
- }
- }
- [2]=>
- array(1) {
- [0]=>
- array(3) {
- [0]=>
- string(9) "127.0.0.1"
- [1]=>
- string(4) "root"
- [2]=>
- string(1) "Y"
- }
- }
- }
-
-
время грязное в микросекундах, с учетом на инклуды и инстанс класса
0.005791
Время без инклудов и инстансов, чисто одна выборка по PK
$t1 = microtime();
$retval = $hs->executeSingle(2, '=', array('60187'));
echo microtime()-$t1, PHP_EOL;
$t1 = microtime();
$res = $rs->select('=','60187');
echo microtime()-$t1, PHP_EOL;
Немного смущает отсутствие документации на php-hanlpersocket
Первый опыт работы с Handler Socket & php_handlersocket