<?php
/*
CREATE TABLE hstesttbl (
k varchar(30) PRIMARY KEY,
v varchar(30) NOT NULL,
f1 varchar(30),
f2 varchar(30)
) Engine = innodb;
CREATE INDEX i1 ON hstesttbl(v, k);
INSERT INTO hstesttbl VALUES ('k1', 'v1', 'f1', 'f2');
INSERT INTO hstesttbl VALUES ('k2', 'v2', 'f2', NULL);
INSERT INTO hstesttbl VALUES ('k3', 'v3', 'f3', '');
INSERT INTO hstesttbl VALUES ('k4', 'v4', 'f4', 'f24');
INSERT INTO hstesttbl VALUES ('k5', 'v5', 'f5', NULL);
INSERT INTO hstesttbl VALUES ('k6', 'v6', 'f6', '');
*/
function status_ok($proc, $msg = 'OK')
{
if (is_scalar($msg))
{
if (is_bool($msg))
{
if ($msg)
{
echo "$proc => \033[1;34mtrue\033[0m\n";
}
else
{
echo "$proc => \033[1;34mfalse\033[0m\n";
}
}
else
{
echo "$proc => \033[1;34m$msg\033[0m\n";
}
}
else
{
echo "$proc => \033[1;34m\n";
var_dump($msg);
echo "\033[0m";
}
}
/* æ¥ç¶æ
å ± */
$host = 'localhost';
$port = 9999;
//$port = '9999';
$dbname = 'hstestdb';
$table = 'hstesttbl';
$auth = 'pass';
//HandlerSocket: æ¥ç¶
try
{
//æå:
$hs = new HandlerSocket(
$host, //ãã¹ãå
$port //ãã¼ãçªå·
);
//$hs = new HandlerSocket($host, $port, null); //null ãªãã·ã§ã³
//$hs = new HandlerSocket(null, $port, array('host' => $host));
//$hs = new HandlerSocket($host, null, array('port' => $port));
//$hs = new HandlerSocket(null, null, array('host' => $host, 'port' => $port));
//失æ:
//$hs = new HandlerSocket(); //弿°ãªã
//$hs = new HandlerSocket($host); //ãã¼ãæå®ãªã
//$hs = new HandlerSocket('', $port); //空ãã¹ã
//$hs = new HandlerSocket('testserver', $port); //ç¡å¹ãã¹ã
//$hs = new HandlerSocket($host, ''); //空ãã¼ã
//$hs = new HandlerSocket($host, 8888); //ç¡å¹ãã¼ã
//$hs = new HandlerSocket(null, $port); //null ãã¹ã
//$hs = new HandlerSocket($host, null); //null ãã¼ã
//$hs = new HandlerSocket(null, null); //null
}
catch (HandlerSocketException $exception)
{
//ã¨ã©ã¼æã¯ HandlerSocketException ãçºç
echo $exception->getMessage(), PHP_EOL;
die();
}
status_ok('new HandlerSocket', $hs);
//èªè¨¼
//æå:
$ret = $hs->auth($auth);
//$ret = $hs->auth($auth, '1');
//$ret = $hs->auth($auth, 'hoge');
//失æ:
//$ret = $hs->auth(); //弿°ãªã
//$ret = $hs->auth(''); //空
//$ret = $hs->auth(null); //NULL
//$ret = $hs->auth(array($auth)); //é
å
status_ok('HandlerSocket::auth', $ret);
//ã¤ã³ããã¯ã¹å±é
//æå:
$id = 1;
$key = 'PRIMARY';
//$key = 'i1';
//$key = ''; //空㯠PRIMARY ã¨åã
//$key = null; //NULLã PRIMARY ã¨åã
$field = 'k,v';
//$field = array('k','v');
//$field = ''; //ãªã«ãåå¾ã§ããªã
//$field = null; //ãªã«ãåå¾ã§ããªã
//$filter = 'f1,f2';
//$filter = array('f1','f2');
//$filter = ''; //--> ãã®å ´åã©ã¼ãªãã® ?
$filter = null; //--> ãã®å ´åã©ã¼ãªãã® ?
$ret = $hs->openIndex(
$id, //ã¤ã³ããã¯ã¹çªå·
$dbname, //ãã¼ã¿ãã¼ã¹å
$table, //ãã¼ãã«å
$key, //ã¤ã³ããã¯ã¹å
$field, //ãã£ã¼ã«ããªã¹ã (ã«ã³ãåºåãããã¹ã or é
å)
$filter //ãã£ã«ã¿ã¼ãã£ã¼ã«ããªã¹ã (ã«ã³ãåºåãããã¹ã or é
å)
);
/*
//失æ:
$key = 'PRIMARY';
$field = 'k,v';
$filter = 'f1,f2';
//$ret = $hs->openIndex(); //弿°ãªã
//$ret = $hs->openIndex($id); //DB, Table, Key, Field ãªã
//$ret = $hs->openIndex($id, $dbname); //Table, Key, Field ãªã
//$ret = $hs->openIndex($id, $dbname, $table); //Key, Field ãªã
//$ret = $hs->openIndex($id, $dbname, $table, $key); //Field ãªã
//$ret = $hs->openIndex('', $dbname, $table, $key, $field); //空 ID
//$ret = $hs->openIndex('a', $dbname, $table, $key, $field); //æåå ID
//$ret = $hs->openIndex($id, '', $table, $key, $field); //空 DB
//$ret = $hs->openIndex($id, 'hoge', $table, $key, $field); //ç¡å¹ DB
//$ret = $hs->openIndex($id, null, $table, $key, $field); //NULL DB
//$ret = $hs->openIndex($id, array($db), $table, $key, $field); //é
å DB
//$ret = $hs->openIndex($id, $dbname, '', $key, $field); //空 Table
//$ret = $hs->openIndex($id, $dbname, 'hoge', $key, $field); //ç¡å¹ Table
//$ret = $hs->openIndex($id, $dbname, null, $key, $field); //NULL Table
//$ret = $hs->openIndex($id, $dbname, array($table), $key, $field); //é
å Table
//$ret = $hs->openIndex($id, $dbname, $table, 'hoge', $field); //ç¡å¹ Key
//$ret = $hs->openIndex($id, $dbname, $table, array($key), $field); //é
å Key
//$ret = $hs->openIndex($id, $dbname, $table, $key, 'hoge'); //ç¡å¹ Field
//$ret = $hs->openIndex($id, $dbname, $table, $key, $field, 'hoge'); //ç¡å¹ Filter
//$ret = $hs->openIndex($id, $dbname, $table, $key, $field, array('hoge')); //ç¡å¹é
å Filter
*/
status_ok('HandlerSocket::openIndex', $ret);
//å¦çã®å®è¡
//æå:
//$ret = $hs->executeSingle($id, '>', array('k1'));
//$ret = $hs->executeSingle($id, '>', 'k1');
//[SQL] => SELECT k, v FROM hstesttbl WHERE k = 'k1' LIMIT 0, 1
//$ret = $hs->executeSingle($id, '>=', array('k1'), 2);
//[SQL] => SELECT k, v FROM hstesttbl WHERE k >= 'k1' LIMIT 0, 2
//$ret = $hs->executeSingle($id, '>=', array('k1'), 2, 1);
//[SQL] => SELECT k, v FROM hstesttbl WHERE k >= 'k1' LIMIT 1, 2
//$ret = $hs->executeSingle($id, '>=', array('k1'), 2, 0, null, null, array('F', '>=', 0, 'f2'));
//$ret = $hs->executeSingle($id, '>=', array('k1'), 2, 0, null, null, array(array('F', '>=', 0, 'f2')));
//[SQL] => SELECT k, v FROM hstesttbl WHERE k >= 'k1' AND f1 >= 'f2' LIMIT 0, 2
//$ret = $hs->executeSingle($id, '>=', array('k1'), 2, 0, null, null, array(array('F', '>=', 0, 'f2'), array('F', '=', 1, null)));
//[SQL] => SELECT k, v FROM hstesttbl WHERE k >= 'k1' AND f1 >= 'f2' AND f2 IS NULL LIMIT 0, 2
//$ret = $hs->executeSingle($id, '=', array(''), 3, 0, null, null, null, 0, array('k3', 'k6'));
//[SQL] => SELECT k, v FROM hstesttbl WHERE k IN ('k3', 'k6') LIMIT 0, 3
//$ret = $hs->executeSingle($id, '=', array('k1'), 1, 0, 'U', array('k1', 'V1'));
//$ret = $hs->executeSingle($id, '=', array('k1'), null, null, 'U', array('k1', 'v1'));
//[SQL] => UPDATE hstesttbl SET k = 'k1', v = 'V1' WHERE k = 'k1';
//$ret = $hs->executeSingle($id, '=', array('k1'), 1, 0, 'U?', array('k1', 'V1'));
//[SQL] => SELECT k, v FROM hstesttbl WHERE k = 'k1' LIMIT 0, 1; UPDATE hstesttbl SET k = 'k1', v = 'V1' WHERE k = 'k1' LIMIT 0, 1
//失æ:
//$ret = $hs->executeSingle(); //弿°ãªã
//$ret = $hs->executeSingle($id); //æ¯è¼æ¼ç®å, æ¯è¼å¤ãªã
//$ret = $hs->executeSingle($id, '>'); //æ¯è¼å¤ãªã
//$ret = $hs->executeSingle(10, '>', array('k1')); //ç¡å¹æ¥ç¶ ID
//$ret = $hs->executeSingle($id, '>>', array('k1')); //ç¡å¹æ¯è¼æ¼ç®å
//$ret = $hs->executeSingle($id, '>', array('k1'), 'a'); //ç¡å¹ãªãããå¤
//$ret = $hs->executeSingle($id, '>', array('k1'), 1, 'a'); //ç¡å¹ãªãã»ããå¤
//$ret = $hs->executeSingle($id, '>', array('k1'), 1, 'a'); //ç¡å¹ãªãã»ããå¤
//$ret = $hs->executeSingle($id, '>', array('k1'), 1, 0, 'u'); //ç¡å¹æ´æ°æ¼ç®å
//ç¡è¦:ãã£ã«ã¿ã¼ç¡è¦
//$ret = $hs->executeSingle($id, '>', array('k1'), 1, 0, null, null, array()); //空ãã£ã«ã¿ã¼
//$ret = $hs->executeSingle($id, '>', array('k1'), 1, 0, null, null, array('F', '>=', 0)); //ç¡å¹ãã£ã«ã¿ã¼
status_ok('HandlerSocket::executeSingle', $ret);
//è¤æ°å¦çã®å®è¡
//æå:
$ret = $hs->executeMulti(
array(
array($id, '=', 'k10'),
array($id, '+', array('k10', 'v10')),
array($id, '=', array('k10')),
array($id, '=', array('k10'), 1, 0, 'U', array('k10', '^^10')),
array($id, '>=', array('k10'), 1, 0),
array($id, '=', array('k10'), 1, 0, 'D'),
array($id, '=', array('k10'), 1, 0)
));
//失æ:
//$ret = $hs->executeMulti(); //弿°ãªã
//$ret = $hs->executeMulti(''); //空
//$ret = $hs->executeMulti(array()); //空é
å
//$ret = $hs->executeMulti(array('')); //空é
å
status_ok('HandlerSocket::executeMulti', $ret);
//æ´æ°å¦çã®å®è¡
$hs->openIndex(2, $dbname, $table, $key, 'k,v,f1,f2');
$hs->executeSingle(2, '+', array('k20', 'v20', 'f20', 'f220'));
//æå:
$ret = $hs->executeUpdate(2, '=', array('k20'), array('k20', 'V20', 'F20', 'F220'));
//$ret = $hs->executeUpdate(2, '=', array('k20'), array('k20', 'VV20', 'FF20'));
//$ret = $hs->executeUpdate(2, '=', array('k20'), array('k20', 'VV20'));
//$ret = $hs->executeUpdate(2, '=', array('k20'), 'k20');
//$ret = $hs->executeUpdate(2, '=', array('hoge'), array('k20', 'V20', 'F20', 'F220')); //対象ãªã
//失æ:
//$ret = $hs->executeUpdate(); //弿°ãªã
status_ok('HandlerSocket::executeUpdate', $ret);
//åé¤å¦çã®å®è¡
//æå:
$ret = $hs->executeDelete($id, '=', array('k20'));
//$ret = $hs->executeDelete($id, '=', 'k20');
//$ret = $hs->executeDelete($id, '=', 'hoge'); //対象ãªã
//失æ:
//$ret = $hs->executeDelete(); //弿°ãªã
status_ok('HandlerSocket::executeDelete', $ret);
//æ¿å
¥å¦çã®å®è¡
$hs->openIndex(2, $dbname, $table, $key, 'k,v,f1,f2');
$ret = $hs->executeInsert(2, array('K30', 'V30', 'F130', 'F230'));
//$ret = $hs->executeInsert(2, array('K30', 'V30', 'F130', null, 'F230'));
//失æ:
//$ret = $hs->executeInsert(); //弿°ãªã
//$ret = $hs->executeInsert(2, array()); //空
status_ok('HandlerSocket::executeInsert', $ret);
$hs->executeDelete($id, '=', array('K30'));
//HandlerSocketIndex ãªãã¸ã§ã¯ãã®ä½æ
$id = 3;
$key = 'PRIMARY';
//$field = 'k,v';
$field = array('k', 'v');
//$filter = 'f1,f2';
$filter = array('f1', 'f2');
try
{
//æå:
$index = $hs->createIndex(
$id, //ã¤ã³ããã¯ã¹çªå·
$dbname, //ãã¼ã¿ãã¼ã¹å
$table, //ãã¼ãã«å
$key, //ã¤ã³ããã¯ã¹å
$field, //ãã£ã¼ã«ããªã¹ã (ã«ã³ãåºåãããã¹ã or é
å)
array('filter' => $filter)
);
/*
$index = new HandlerSocketIndex(
$hs, //HandlerSocket ãªãã¸ã§ã¯ã
$id, //index çªå·
$dbname, //ãã¼ã¿ãã¼ã¹å
$table, //ãã¼ãã«å
$key, //ã¤ã³ããã¯ã¹å
$field, //ãã£ã¼ã«ããªã¹ã (ã«ã³ãåºåãããã¹ã or é
å)
array('filter' => $filter)
);
*/
//失æ:
//$index = $hs->createIndex(); //弿°ãªã
//$index = $hs->createIndex($id); //DB, Table, Key, Field ãªã
//$index = $hs->createIndex($id, $dbname); //Table, Key, Field ãªã
//$index = $hs->createIndex($id, $dbname, $table); //Key, Field ãªã
//$index = $hs->createIndex($id, $dbname, $table, $key); //Field ãªã
//$index = $hs->createIndex('', $dbname, $table, $key, $field); //空 ID
//$index = $hs->creteIndex('a', $dbname, $table, $key, $field); //æåå ID
//$index = $hs->createIndex($id, '', $table, $key, $field); //空 DB
//$index = $hs->createIndex($id, 'hoge', $table, $key, $field); //ç¡å¹ DB
//$index = $hs->createIndex($id, $dbname, '', $key, $field); //空 Table
//$index = $hs->createIndex($id, $dbname, 'hoge', $key, $field); //ç¡å¹ Table
//$index = $hs->createIndex($id, $dbname, $table, 'hoge', $field); //ç¡å¹ Key
//$index = $hs->createIndex($id, $dbname, $table, $key, 'hoge'); //ç¡å¹ Field
//失æ: HandlerSocketIndex
//class Obj {}
//$obj = new Obj();
//$index = new HandlerSocketIndex(
// $obj, //ç¡å¹ãªãã¸ã§ã¯ã
// $id, $dbname, $table, $key, $field
//);
}
catch (HandlerSocketException $exception)
{
//ã¨ã©ã¼æã¯ HandlerSocketException ãçºç
echo 'Error:', $exception->getMessage(), PHP_EOL;
die();
}
status_ok('HandlerSocket::createIndex', $index);
//æ¥ç¶çªå·ã®åå¾
status_ok('HandlerSocketIndex::getId', $index->getId());
//ãã¼ã¿ãã¼ã¹åã®åå¾
status_ok('HandlerSocketIndex::getDatabase', $index->getDatabase());
//ãã¼ãã«åã®åå¾
status_ok('HandlerSocketIndex::getTable', $index->getTable());
//ãã£ã¼ã«ããªã¹ãã®åå¾ (é
å)
status_ok('HandlerSocketIndex::getField', $index->getField());
//ãã£ã«ã¿ã¼ãªã¹ãã®åå¾ (é
å)
status_ok('HandlerSocketIndex::getFilter', $index->getFilter());
//æå¹æ¼ç®åã®åå¾
status_ok('HandlerSocketIndex::getOperator', $index->getOperator());
//ãã¼ã¿ãåå¾ãã
//æå:
status_ok('HandlerSocketIndex:find', $index->find('k2'));
status_ok('HandlerSocketIndex:find', $index->find(array('k2')));
status_ok('HandlerSocketIndex:find', $index->find(array('=' => 'k2')));
//[SQL] => SELECT k, v FROM hstesttbl WHERE k = 'k2' LIMIT 1
status_ok('HandlerSocketIndex:find', $index->find(array('>' => ''), 2, 0));
//[SQL] => SELECT k, v FROM hstesttbl WHERE k > '' LIMIT 2
status_ok('HandlerSocketIndex:find', $index->find(array('>' => ''), 2, 1));
//[SQL] => SELECT k, v FROM hstesttbl WHERE k > '' LIMIT 1, 2
//status_ok('HandlerSocketIndex:find', $index->find(null));
$ret = $index->find(
'', 10, 0, array('in' => array('k2', 'k4')));
//'', 10, 0, array('in' => 'k5'));
//'', 10, 0, array('in' => array(array('k3', 'k6'))));
status_ok('HandlerSocketIndex:find', $ret);
//[SQL] => SELECT k, v FROM hstesttbl WHERE k IN ('k2', 'k4) LIMIT 10
$ret = $index->find(
array('>' => ''), 10, 0, array('filter' => array('=', 'f1', 'f2')));
//$ret = $index->find(
// array('>' => ''), 10, 0, array('filter' => array(array('=', 'f1', 'f2'))));
//$ret = $index->find(
// array('>' => ''), 2, 0, array('filter' => array(
// array('>=', 'f1', 'f2'),
// array('=', 'f2', null),
// )));
status_ok('HandlerSocketIndex:find', $ret);
//[SQL] => SELECT k, v FROM hstesttbl WHERE k > '' AND f1 = 'f2' LIMIT 10
//失æ:
//$ret = $index->find(array('>>' => 'k3'));
//try
//{
// $ret = $index->find(array('>>' => 'k3'), 1, 0, array('safe' => true));
//}
//catch (HandlerSocketException $exception)
//{
// $ret = false;
// echo $exception->getMessage(), PHP_EOL;
//}
//$ret = $index->find(); //弿°ãªã
//$ret = $index->find(array('>>' => 'k3')); //䏿£æ¼ç®å
//$ret = $index->find(array('=' => array('k3', 'k2'))); //ç¡å¹é
å
//$ret = $index->find('', 'a'); //ç¡å¹ãªãããå¤
//$ret = $index->find('', 2, 'a'); //ç¡å¹ãªãã»ããå¤
//ç¡è¦:
//$ret = $index->find(
// array('>' => ''), 10, 0,
// array('filter' => array('>'))); //ãã£ã«ã¿å¼æ°æªæº
//$ret = $index->find(
// array('>' => ''), 10, 0,
// array('filter' => array('>', 'f1'))); //ãã£ã«ã¿å¼æ°æªæº
//$ret = $index->find(
// array('>' => ''), 10, 0,
// array('filter' => array('>', 'f3', 'f'))); //ç¡å¹ãã£ã«ã¿ãã¼
//ãã¼ã¿ã追å ãã
//æå:
status_ok('HandlerSocketIndex:insert', $index->insert('K40', 'V40'));
//status_ok('HandlerSocketIndex:insert', $index->insert(array('K40', 'V40')));
//status_ok('HandlerSocketIndex:insert', $index->insert(array('K40', 'V40', 'F40')));
//失æ:
//status_ok('HandlerSocketIndex:insert', $index->insert()); //弿°ãªã
//ãã¼ã¿ãæ´æ°ãã
//æå:
//$ret = $index->update('K40', array('K40', '^^40'));
//$ret = $index->update('K40', array('U' => array('K40', '^^40')));
$ret = $index->update('K40', array('U?' => array('K40', '^^40')));
//$ret = $index->update('K40', 'K40');
//失æ:
//$ret = $index->update(); //弿°ãªã
//$ret = $index->update('K40'); //æ´æ°å¼æ°ãªã
//$ret = $index->update('K40', array('u' => array('K40', 'V40'))); //ç¡å¹æ¼ç®å
status_ok('HandlerSocketIndex:update', $ret);
//ãã¼ã¿ãåé¤ãã
//æå:
status_ok('HandlerSocketIndex:remove', $index->remove('K40'));
//status_ok('HandlerSocketIndex:remove', $index->remove(array('=' => 'K40')));
//status_ok('HandlerSocketIndex:remove', $index->remove(array('K40')));
//失æ:
//$ret = $index->remove(); //弿°ãªã
//è¤æ°ã®å¦çãå®è¡ãã
//æå:
$ret = $index->multi(
array(
array('find', 'k0'),
array('insert', array('k0', 'vv0')),
array('find', array('k0')),
array('update', array('=' => 'k0'), array('U' => array('k0', '^^0'))),
array('find', array('=' => 'k0')),
array('update', 'k0', array('k0', '0xx0')),
array('find', 'k0'),
array('update', 'k0', array('U?' => array('k0', '0---0'))),
array('find', array('k0')),
array('remove', array('=' => 'k0')),
array('find', array('=' => 'k0')),
));
status_ok('HandlerSocketIndex:multi', $ret);
unset($ret);
//失æ:
//$ret = $index->multi(); //弿°ãªã
//$ret = $index->multi(''); //ç©ºå¼æ°
//$ret = $index->multi(null); //NULL 弿°
//$ret = $index->multi(array()); //空é
å
//$ret = $index->multi(array('insert', 'ke', 've')); //ç¡å¹é
å
//$ret = $index->multi(array(array())); //空é
å * 2
//$ret = $index->multi(array(array('insert'))); //ç¡å¹é
å
echo PHP_EOL;
echo '__RESULT__', PHP_EOL;
var_dump(isset($ret) ? $ret : null);
echo '__ERROR__', PHP_EOL;
var_dump(isset($hs) ? $hs->getError() : null);
var_dump(isset($index) ? $index->getError() : null);
echo '__END__', PHP_EOL;