Mysql插件HandlerSocket的应用
一.安装HandlerSocket
1.下载
http://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL
获取 ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-71-g159ea6d.tar.gz
上传到LINUX目录/usr/local/src/ 下
2.安装
cd /usr/local/src/
tar zvfx ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-71-g159ea6d.tar.gz
cd ahiguti-HandlerSocket-Plugin-for-MySQL-159ea6d/
./autogen.sh
./configure --with-mysql-source=/usr/local/src/mysql-5.1.47 --with-mysql-binddir=/usr/local/app/mysql/bin/ --with-mysql-plugindir=/usr/local/app/mysql/lib/mysql/plugin/ --prefix=/usr/local/app/mysql
其中
--with-mysql-source MYSQL源码目录
--with-mysql-binddir MYSQL安装后的BIN目录
--with-mysql-plugindir MYSQL安装后PLUGIN的目录
(***************小插曲************************
笔者在configure的时候遇到的问题:
checking mysql source... yes: Using /usr/local/src/mysql-5.1.47, version 5.1.47
checking for mysql_config... /usr/bin/mysql_config
checking mysql binary... yes: Using /usr/bin/mysql_config, version 5.0.77
configure: error: MySQL source version does not match MySQL binary version
是默认的/usr/bin/mysql_config与mysql-5.1.47源码版本不一样,所以做一下补充:
cp /usr/local/app/mysql/bin/mysql_config /usr/bin/mysql_config
************************************************************)
编译安装:
make;make install
添加配置
vi /etc/my.cnf
增加如下选项:
[mysqld]
loose_handlersocket_port = 9998
# the port number to bind to (for read requests)
loose_handlersocket_port_wr = 9999
# the port number to bind to (for write requests)
loose_handlersocket_threads = 16
# the number of worker threads (for read requests)
loose_handlersocket_threads_wr = 1
# the number of worker threads (for write requests)
open_files_limit = 65535
# to allow handlersocket accept many concurrent
# connections, make open_files_limit as large as
# possible.
然后使用root登录MYSQL
mysql -u root -h localhost -p
在MYSQL控制台中执行命令
mysql> install plugin handlersocket soname 'handlersocket.so';
如果执行成功,可以看到9998 9999 端口已经启动
# netstat -ln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:997 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:9998 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
udp 0 0 0.0.0.0:50187 0.0.0.0:*
udp 0 0 0.0.0.0:991 0.0.0.0:*
udp 0 0 0.0.0.0:994 0.0.0.0:*
udp 0 0 0.0.0.0:5353 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp 0 0 :::43696 :::*
udp 0 0 :::5353 :::*
安装完毕。不需要修改mysql的源代码。
mysql需要5.1或者以后版本。
二、安装PHP的handlerSocket扩展
1.下载源码
http://code.google.com/p/php-handlersocket/downloads/detail?name=php-handlersocket-0.0.7.tar.gz
2.安装
cd /usr/local/src/
tar zvfx php-handlersocket-0.0.7.tar.gz
cd php-handlersocket
/usr/local/bin/phpize
./configure --with-handlersocket --with-php-config=/usr/local/bin/php-config --with-handlersocket-includedir=/usr/local/app/mysql/include/handlersocket/
make LDFLAGS='-L/usr/local/app/mysql/lib' ;
make install
三、使用PHP handlersocket的API
实例化:
/*
* String $host:MySQL ip;
* String $port:handlersocket插件的监听端口,它有两个端口可选:一个用于读、一个用于写
*/
$hs = new HandlerSocket($host, $port);
打开一个数据表:
/*
* Int $index:这个数字相当于文件操作里的句柄,HandlerSocket的所有其他方法都会依据这个数字来操作由这个 openIndex打开的表,
* String $dbname:库名
* String $table:表名
* String $key:表的“主键”(HandlerSocket::PRIMARY)或“索引名”作为搜索关键字段,这就是说表必须有主键或索引
* 个人理解:要被当做where条件的key字段,这样可以认为handlersocket只有一个where条件
* String $column:'column1,column2' 所打开表的字段(以逗号隔开),就是说$table表的其他字段不会被操作
*/
$hs->openIndex($index, $dbname, $table, $key, $column);
查询:
/*
* Int $index: openIndex()所用的$index
* String $operation:openIndex方法中指定的$key字段所用的操作符,目前支持'=', '>=', '<=', '>',and '<';可以理解为where条件
* Array $value
* Int $number(默认是1):获取结果的最大条数;相当于SQL中limit的第二个参数
* Int $skip(默认是0):跳过去几条;相当于SQL中limit的第一个参数
*/
$retval = $hs->executeSingle($index, $operation, $value, $number, $skip);
插入(注意:此处的openIndex要用$port_wr,即读写端口):
/*
* Int $index: openIndex()所用的$index
* Array $arr:数字元素数与openIndex的$column相同
*/
$retval = $hs->executeInsert($index, $arr);
删除(注意:此处的openIndex要用$port_wr,即读写端口):
/*
* Int $index: openIndex()所用的$index
* String $operation:openIndex方法中指定的$key字段所用的操作符,目前支持'=', '>=', '<=', '>',and '<';可以理解为where条件
* Array $value
* Int $number(默认是1):获取结果的最大条数;相当于SQL中limit的第二个参数
* Int $skip(默认是0):跳过去几条;相当于SQL中limit的第一个参数
*/
$retval = $hs->executeDelete($index, $operation, $value, $number, $skip);
更新(注意:此处的openIndex要用$port_wr,即读写端口):
/*
* Int $index: openIndex()所用的$index
* String $operation:openIndex方法中指定的$key字段所用的操作符,目前支持'=', '>=', '<=', '>',and '<';可以理解为where条件
* Array $value
* Int $number(默认是1):获取结果的最大条数;相当于SQL中limit的第二个参数
* Int $skip(默认是0):跳过去几条;相当于SQL中limit的第一个参数
*/
$retval = $hs->executeUpdate($index, $operation, $value, $number, $skip);
示例:
<?php
$host = 'localhost';
$port = 9998;
$port_wr = 9999;
$dbname = 'discuz';
$table = 'cdb_members';
$hs = new HandlerSocket($host, $port);
if (!($hs->openIndex(0, $dbname, $table, "username", 'uid,username,password,gender'))) { echo $hs->getError(), PHP_EOL; die(); }
$retval = $hs->executeSingle(0, '=', array('吉祥二宝'), 10, 0); var_dump($retval);
?>
转载于:https://my.oschina.net/u/141969/blog/609527
Mysql插件HandlerSocket的应用相关推荐
- mysql handler socket_MySQL的NoSQL插件HandlerSocket
[IT168 评论] MySql作为一款开源数据库,有着使用成本低.简单易用的特点.对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大 ...
- emq插件开发mysql_EMQ的Mysql插件
EMQ最新版的是EMQX3.x.x版本,一如既往的支持Mysql认证,这里专门对Mysql认证插件做个研究,写点总结.本人能力有限,文章不足之处希望及时反馈以免误导. 首先我先描述一下我的应用场景:我 ...
- 编译ARM平台的 QtEmbedded 的MySQL插件和移植MySQL到ARM开发板
经过几天的努力,终于交叉编译出了arm平台所需Qt/E的MySQL插件(驱动),其中顺便把MySQL也移植到了mini2410的开发板上. 编译器:arm-linux-gcc(4.3.2) Pc平台: ...
- emq+mysql设置_EMQ--添加mysql认证及mysql插件访问控制
EMQ-百万级分布式开源物联网MQTT消息服务器. MQTT 认证设置 EMQ 消息服务器认证由一系列认证插件(Plugin)提供,系统支持按用户名密码.ClientID 或匿名认证. 系统默认开启匿 ...
- arm qt mysql插件_Ubuntu下编译ARM平台Qt的MySQL插件
最近需要将一个程序移植到arm平台上,程序调用了MySQL数据库,所以就牵扯到将MySQL数据库移植到ARM平台上面,所以在网上大量查阅资料.在baidu文库发现了一篇文档,是wlzxlc上传的文档名 ...
- Wordpress 修改 mysql 插件_史上最详细的WordPress安装教程(三):安装php 5.6及fpm、pdo、mysql等插件...
安装php 5.6 yum -y install epel-release rpm -ivh http://rpms.famillecollet.com/enterprise/remi-releas ...
- zabbix3.0.2 使用percona mysql插件来监控mysql5.7的详细实现过程
zabbix3.0.2 使用percona mysql插件来监控mysql5.7的详细实现过程 --前言 上次用了zabbix自带的mysql插件来监控mysql数据库,但是太过简陋了,对于我们dba ...
- arm qt mysql插件_编译ARM平台的QtEmbedded的MySQL插件和移植MySQL
编译ARM平台的QtEmbedded 的MySQL插件和移植MySQL 到ARM开发板 经过几天的努力,终于交叉编译出了arm平台所需Qt/E的MySQL插件(驱动),其中顺便把MySQL也移植到了m ...
- emqtt mysql认证_Emqtt -- 05 -- Mysql插件认证及访问控制
了解了 Clientid 认证后,现在我们再来了解下 Mysql 插件认证以及访问控制,默认关闭了匿名认证 一.创建用户表和控制表 根据官方文档,用户表的名称为:mqtt_user,访问控制表的名称为 ...
- 如何添加MySQL插件_如何开发一个自定义的MySQL插件
MySQL自带了很多插件,比如半同步插件.审计插件.密码验证插件等等,甚至MySQL存储引擎也是以插件方式实现的.MySQL开放的插件接口,为开发者开发自定义插件提供了便利.本文将介绍如何快速开发一个 ...
最新文章
- 学习C#要养成的好习惯
- CTFshow php特性 web133
- arcgis 卸载和注册表相关总结
- il和idl区别_我来给普及一下matlab、IDL、fortran神马的区别吧
- 【C语言项目】贪吃蛇游戏(下)
- 无重叠区间及用最少的箭射爆气球
- 电脑中毒的表现有哪些?电脑中毒了怎么办?
- 浏览器推送 comet
- Aligned公司在凤凰城建设数据中心将采用微电网的电力
- 《Cocos2d-JS开发之旅》重印在即,感谢大家的支持
- App测试流程及测试点
- 零基础学Python课后实战第五章
- 征信为民守初心!《征信业管理条例》颁布十周年
- 24个希腊字母 大小写 读音
- [Python从零到壹] 四十五.图像增强及运算篇之图像灰度非线性变换详解
- 计算机基本原理——CPU的结构与原理
- Android开发——Snackbar使用详解
- 阿里云服务器购买合同怎么申请
- 乐理基础知识-1.节奏
- 华为java 优招面试题_华为面试题及答案
热门文章
- 屏幕录制软件有哪些?4款超好用录屏软件下载,强烈推荐
- 1.业务架构·应用架构·数据架构实战 --- 架构实践全景图
- STM32L系列与普通STM32F系列的比较
- 通达信版弘历软件指标_通达信精选指标——弘历趋势
- 自定义 View 之抖音时钟罗盘仪效果
- ds18b20触摸没反应_写个DS18B20初始化程序,死活没反应
- 微信小程序自定义拍照和H5调用摄像头拍照
- MQTT X Web:在线的 MQTT 5.0 客户端工具
- andorid简单计算器java源码_Android开发实现的简单计算器功能【附完整demo源码下载】...
- 欧姆龙nj与nx哪个高端_没想到还有比三菱更垃圾的PLC,欧姆龙隆重登场