junker / hsal
HandlerSocket 抽象层
0.2.2
2021-01-06 05:31 UTC
Requires
- php: >=5.4
Suggests
- ext-handlersocketi: HandlerSocket C extension for PHP (high performance)
- tz-lom/HSPHP: This library provides an API for communicating with the HandlerSocket plugin for MySQL
README
HSAL - PHP 的 HandlerSocket 抽象层库
需求
HSAL 需要 PHP 5.4 或更高版本。
handlerSocket 库之一
- HSPHP (https://github.com/tz-lom/HSPHP)
- Handlersocketi (https://github.com/kjdev/php-ext-handlersocketi) 安装说明
安装
安装 HSAL 的最佳方式是使用 Composer
php composer.phar require junker/hsal
示例
use HSAL\HSAL; $hs = new HSAL('localhost', 'database'); //SELECT id,title FROM pages WHERE id=5 $page = $hs->fetchAssoc('pages', ['id', 'title'], [HSAL::INDEX_PRIMARY => 5] ); print_r($page); // ['id' => 5, 'title' => 'page number 5']
//SELECT title FROM pages WHERE id=5 $title = $hs->fetchColumn('pages', 'title', [HSAL::INDEX_PRIMARY => 5]); print_r($title); // page number 5
//SELECT id,page_id,title FROM pages_lang WHERE page_id=5 AND language_id=2 $page = $hs->fetchArray('pages_lang', ['id', 'page_id', 'title'], ['page_lang' => [5,2]] ); print_r($title); // [21, 5, 'numéro de la page 5']
//SELECT id,title FROM pages WHERE view_count>10 LIMIT 5 $pages = $hs->fetchAll('pages', ['id', 'title'], ['view_count' => 10], HSAL::OPERATOR_GREATER, 5 ); print_r($pages); // [['id' => 4, 'title' => 'page number 4'], ['id' => 5, 'title' => 'page number 5']]
//can make request to another database(i.e. dev_database) without creating new HSAL instance //SELECT title FROM dev_database.pages WHERE id=5 $title = $hs->fetchColumn('dev_database.pages', 'title', [HSAL::INDEX_PRIMARY => 5]);
use HSAL\HSAL; $hs = new HSAL('localhost', 'database', ['driver' => HSAL::DRIVER_HSPHP, 'port_write' => 5555]); $hs->insert('pages', ['id' => 6, 'title' => 'New page']); $result = $hs->delete('pages', ['id' => 6]); print_r($result); // 1 $result = $hs->delete('pages', ['id' => 6]); print_r($result); // 0, because record doesn't exists $hs->update('pages', ['title' => 'Best page'], [HSAL::INDEX_PRIMARY => 5]); $hs->increment('pages', 'view_count', [HSAL::INDEX_PRIMARY => 5]);
API
方法
__construct($host, $database, $options)
- driver: 默认 HSAL::DRIVER_AUTO
- port_read: 读取端口 (int)
- port_write: 写入端口 (int)
- timeout: 超时,仅适用于 Handlersocketi 驱动 (double, 默认: 5)
- rw_timeout: 读写超时,仅适用于 Handlersocketi 驱动 (double, 默认: 5)
fetchArray($table, $fields, $index_condition, $operator)
fetchAssoc($table, $fields, $index_condition, $operator)
fetchColumn($table, $field, $index_condition, $operator)
fetchAll($table, $fields, $index_condition, $operator, $limit, $offset)
delete($table, $index_condition, $operator)
insert($table, $values)
update($table, $values, $index_condition, $operator)
increment($table, $field, $index_condition, $operator, $increment)
decrement($table, $field, $index_condition, $operator, $decrement)
//Operators HSAL::OPERATOR_EQUAL = '='; HSAL::OPERATOR_LESS = '<'; HSAL::OPERATOR_LESS_EQUAL = '<='; HSAL::OPERATOR_GREATER = '>'; HSAL::OPERATOR_GREATER_EQUAL = '>='; //Drivers HSAL::DRIVER_AUTO //auto-detect HSAL::DRIVER_HSPHP HSAL::DRIVER_HANDLERSOCKETI
路线图
- php-handlersocket 驱动 (https://code.google.com/p/php-handlersocket/)
- 批量查询
- 授权