php数据库操作类(可用mysql,mssql,pg)

 更新时间:2016年11月25日 16:37  点击:1667
文章分享的这篇文章是因为这篇文章数据库操作类可用mysql,mssql,pg三种数据库,你只要作任何修改就可以方便的改变你数据库的类型哦。

// -函数清单 索引:
// - Open: 打开数据库连接 Line:71
// - Close: 关闭数据库连接 Line:107
// - SelectDB: 选择数据库 Line:129
// - Query: 创建查询 Line:151
// - DataSeek: 移动记录指针 Line:175
// - FieldName: 获取字段名称 Line:198
// - FieldType: 获取字段类型 Line:220
// - FieldLenght: 获取字段长度 Line:242
// - FetchRow: 获取数据并保存到数组(数字索引) Line:264
// - FetchArray: 获取数据并保存进数组(数字和关联) Line:289
// - FetchObject: 获取数据并保存到对象(对象方式) Line:315
// - Result: 获取结果数据 Line:341
// - FreeResult: 刷新记录集 Line:363
// - RowsNumber: 获取记录数量 Line:385
// - FieldsNumber: 获取字段数量 Line:407
// - CurRecNumber: 获取当前记录号(从0开始) Line:429
// - RecordNumber: 获取当前行号(从1开始) Line:438
// - MoveFirstRec: 移动到第一条记录 Line:447
// - MoveLastRec: 移动到最后一条记录 Line:469
// - MovePreviousRec: 移动到前一条记录 Line:495
// - MoveNextRec: 移动到下一条记录 Line:521
// - MoveToRec: 移动到一个特定的记录(从1开始) Line:548

 

 代码如下 复制代码

< ?PHP

/**********************************************************************************

此类将数据库操作封装,具有良好的可移植性,针对数据库:mysql,mssql,pg

*原作者:Andrzej Manczyk 整理:玉面修罗 E-mail/msn:xiuluo-999@163.com 时间:2006-12-20*

************************************************************************************

// -函数清单 索引:

// - Open: 打开数据库连接 Line:71

// - Close: 关闭数据库连接 Line:107

// - SelectDB: 选择数据库 Line:129

// - Query: 创建查询 Line:151

// - DataSeek: 移动记录指针 Line:175

// - FieldName: 获取字段名称 Line:198

// - FieldType: 获取字段类型 Line:220

// - FieldLenght: 获取字段长度 Line:242

// - FetchRow: 获取数据并保存到数组(数字索引) Line:264

// - FetchArray: 获取数据并保存进数组(数字和关联) Line:289

// - FetchObject: 获取数据并保存到对象(对象方式) Line:315

// - Result: 获取结果数据 Line:341

// - FreeResult: 刷新记录集 Line:363

// - RowsNumber: 获取记录数量 Line:385

// - FieldsNumber: 获取字段数量 Line:407

// - CurRecNumber: 获取当前记录号(从0开始) Line:429

// - RecordNumber: 获取当前行号(从1开始) Line:438

// - MoveFirstRec: 移动到第一条记录 Line:447

// - MoveLastRec: 移动到最后一条记录 Line:469

// - MovePreviousRec: 移动到前一条记录 Line:495

// - MoveNextRec: 移动到下一条记录 Line:521

// - MoveToRec: 移动到一个特定的记录(从1开始) Line:548

************************************************************************************

//Inputs:

// - dbType: databases type: mssql, mysql, pg

// - connectType: connection type: c - common connection,

// p - open persistent connection

// - connect: for MS SQL Server - server name,

// for MySQL - hostname [:port] [:/path/to/socket] ,

// for PostgreSQL - host, port, tty, options,

// dbname (without username and password)

// - username

// - password

// - dbName: database name

// - query: SQL query

// - result: result set identifier

// - RowNumber:

// - offset: field identifier

// - ResultType: a constant and can take the following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH

// - FieldName

//

//Returns:

// - result: result set identifier

// - connect link identifier

// - record number (starting at 0: CurrRecNumber or starting at 1: RecordNumber)

// - number of fields in the specified result set

// - number of rows in the specified result set

*************************************************************************************/

Class mDatabase

{

/***********************************成员变量定义***************************************/

var $dbType; // 数据库类型: mssql, mysql, pg

var $connectType; // 连接类型: c - common connection, p - open persistent connection

var $idCon; // 连接号

var $curRow; // current row number of data from the result

// associated with the specified result identifier array

var $seek; // current row number of data from DataSeek function array

 

/***********************************成员方法实现***************************************/

/************************************************************************************

*连接数据库的函数

*************************************************************************************/

Function Open($dbType, $c, $connect, $username = "", $password = "")

{

$this->dbType = $dbType;

Switch ($dbType) {

Case "mssql":

If ($connectType == "c") {

$idCon = mssql_connect($connect, $username, $password);

} Else {

$idCon = mssql_pconnect($connect, $username, $password);

}

Break;

Case "mysql":

If ($connectType == "c") {

$idCon = mysql_connect($connect, $username, $password);

} Else {

$idCon = mysql_pconnect($connect, $username, $password);

}

Break;

Case "pg":

If ($connectType == "c") {

$idCon = pg_connect($connect . " user=" . $username . " password=" . $password);

} Else {

$idCon = pg_pconnect($connect . " user=" . $username . " password=" . $password);

}

Break;

Default:

$idCon = 0;

Break;

}

$this->idCon = $idCon;

Return $idCon;

}

/************************************************************************************

*关闭数据库连接

*************************************************************************************/

Function Close()

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_close($this->idCon);

Break;

Case "mysql":

$r = mysql_close($this->idCon);

Break;

Case "pg":

$r = pg_close($this->idCon);

Break;

Default:

$r = False;

Break;

}

Return $r;

}

/************************************************************************************

*选择数据库

*************************************************************************************/

Function SelectDb($dbName)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_select_db($dbName);

Break;

Case "mysql":

$r = mysql_select_db($dbName);

Break;

Case "pg":

$r = False;

Break;

Default:

$r = False;

Break;

}

Return $r;

}

/************************************************************************************

*创建查询

*************************************************************************************/

Function Query($query)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_query($query, $this->idCon);

Break;

Case "mysql":

$r = mysql_query($query, $this->idCon);

Break;

Case "pg":

$r = pg_exec($this->idCon, $query);

Break;

Default:

$r = False;

Break;

}

$this->curRow[$r] = 0;

$this->seek[$r] = 0;

Return $r;

}

/************************************************************************************

*移动记录指针

*************************************************************************************/

Function DataSeek($result, $RowNumber)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_data_seek($result, $RowNumber);

Break;

Case "mysql":

$r = mysql_data_seek($result, $RowNumber);

Break;

Case "pg":

$r = False;

Break;

Default:

$r = False;

Break;

}

$this->seek[$result] = (int) $RowNumber;

Return $r;

}

/************************************************************************************

*获取字段名

*************************************************************************************/

Function FieldName($result, $offset)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_field_name($result, $offset);

Break;

Case "mysql":

$r = mysql_field_name($result, $offset);

Break;

Case "pg":

$r = pg_fieldname($result, $offset);

Break;

Default:

$r = False;

Break;

}

Return $r;

}

/************************************************************************************

*获取字段类型

*************************************************************************************/

Function FieldType($result, $offset)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_field_type($result, $offset);

Break;

Case "mysql":

$r = mysql_field_type($result, $offset);

Break;

Case "pg":

$r = pg_fieldtype($result, $offset);

Break;

Default:

$r = False;

Break;

}

Return $r;

}

/************************************************************************************

*获取字段长度

*************************************************************************************/

Function FieldLength($result, $offset)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_field_length($result, $offset);

Break;

Case "mysql":

$r = mysql_field_len($result, $offset);

Break;

Case "pg":

$r = pg_fieldsize($result, $offset);

Break;

Default:

$r = False;

Break;

}

Return $r;

}

/************************************************************************************

*获取数据并保存到数组,可以用数字索引方式访问数组

*************************************************************************************/

Function FetchRow($result, $RowNumber = 0)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_fetch_row($result);

Break;

Case "mysql":

$r = mysql_fetch_row($result);

Break;

Case "pg":

$r = pg_fetch_row($result, $RowNumber);

If ($r) {

$this->curRow[$result] = $RowNumber;

$this->seek[$result] = $RowNumber;

}

Break;

Default:

$r = False;

Break;

}

Return $r;

}

 

/************************************************************************************

*获取数据并保存到数组,可以用数字索引和关联索引的方式访问

*************************************************************************************/

Function FetchArray($result, $RowNumber = 0, $ResultType = 2)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_fetch_array($result);

Break;

Case "mysql":

$r = mysql_fetch_array($result);

Break;

Case "pg":

$r = pg_fetch_array($result, $RowNumber, $ResultType);

If ($r) {

$this->curRow[$result] = $RowNumber;

$this->seek[$result] = $RowNumber;

}

Break;

Default:

$r = False;

Break;

}

Return $r;

}

/************************************************************************************

*获取数据并保存到对象

*************************************************************************************/

Function FetchObject($result, $RowNumber = 0, $ResultType = 2)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_fetch_object($result);

Break;

Case "mysql":

$r = mysql_fetch_object($result);

Break;

Case "pg":

$r = pg_fetch_object($result, $RowNumber, $ResultType);

If ($r) {

$this->curRow[$result] = $RowNumber;

$this->seek[$result] = $RowNumber;

}

Break;

Default:

$r = False;

Break;

}

Return $r;

}

/************************************************************************************

*获取结果数据

*************************************************************************************/

Function Result($result, $RowNumber, $FieldName)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_result($result, $RowNumber, $FieldName);

Break;

Case "mysql":

$r = mysql_result($result, $RowNumber, $FieldName);

Break;

Case "pg":

$r = pg_result($result, $RowNumber, $FieldName);

Break;

Default:

$r = False;

Break;

}

Return $r;

}

/************************************************************************************

*释放结果数据

*************************************************************************************/

Function FreeResult($result)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_free_result($result);

Break;

Case "mysql":

$r = mysql_free_result($result);

Break;

Case "pg":

$r = pg_freeresult($result);

Break;

Default:

$r = False;

Break;

}

Return $r;

}

/************************************************************************************

*获取记录数量

*************************************************************************************/

Function RowsNumber($result)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_num_rows($result);

Break;

Case "mysql":

$r = mysql_num_rows($result);

Break;

Case "pg":

$r = pg_numrows($result);

Break;

Default:

$r = False;

Break;

}

Return $r;

}

/************************************************************************************

*获取字段数量

*************************************************************************************/

Function FieldsNumber($result)

{

Switch ($this->dbType) {

Case "mssql":

$r = mssql_num_fields($result);

Break;

Case "mysql":

$r = mysql_num_fields($result);

Break;

Case "pg":

$r = pg_numfields($result);

Break;

Default:

$r = False;

Break;

}

Return $r;

}

/************************************************************************************

*获取当前记录号(从0开始)

*************************************************************************************/

Function CurRecNumber($result)

{

$r = $this->curRow[$result];

Return $r;

}

/************************************************************************************

*获取当前行号(从1开始)

*************************************************************************************/

Function RecordNumber($result)

{

$cr = $this->CurRecNumber($result) + 1;

Return $cr;

}

/************************************************************************************

*移动到第一条记录

*************************************************************************************/

Function MoveFirstRec($result)

{

Switch ($this->dbType) {

Case "pg":

$r = $this->FetchRow($result, 0);

Break;

Default:

$rn = $this->DataSeek($result, 0);

If ($rn) {

$r = $this->FetchRow($result);

If ($r) $this->curRow[$result] = $this->seek[$result];

} Else {

$r = False;

}

Break;

}

Return $r;

}

/************************************************************************************

*移动到最后一条记录

*************************************************************************************/

Function MoveLastRec($result)

{

$rs = $this->RowsNumber($result);

If ($rs) {

$rs--;

Switch ($this->dbType) {

Case "pg":

$r = $this->FetchRow($result, $rs);

Break;

Default:

$rn = $this->DataSeek($result, $rs);

If ($rn) {

$r = $this->FetchRow($result);

If ($r) $this->curRow[$result] = $this->seek[$result];

} Else {

$r = False;

}

Break;

}

}

Return $r;

}

/************************************************************************************

*移动到前一条记录

*************************************************************************************/

Function MovePreviousRec($result)

{

$rs = $this->CurRecNumber($result);

If ($rs) {

$rs--;

Switch ($this->dbType) {

Case "pg":

$r = $this->FetchRow($result, $rs);

Break;

Default:

$rn = $this->DataSeek($result, $rs);

If ($rn) {

$r = $this->FetchRow($result);

If ($r) $this->curRow[$result] = $this->seek[$result];

} Else {

$r = False;

}

Break;

}

}

Return $r;

}

/************************************************************************************

*移动到下一条记录

*************************************************************************************/

Function MoveNextRec($result)

{

$rs = $this->CurRecNumber($result);

$rn = $this->RowsNumber($result);

$rs++;

If ($rs != $rn) {

Switch ($this->dbType) {

Case "pg":

$r = $this->FetchRow($result, $rs);

Break;

Default:

$re = $this->FetchRow($result);

If ($re) {

$r = $re;

$this->curRow[$result]++;

$this->seek[$result] = $this->curRow[$result];

} Else {

$r = False;

}

Break;

}

}

Return $r;

}

/************************************************************************************

*移动到指定记录(编号从0开始)

*************************************************************************************/

Function MoveToRec($result, $RowNumber)

{

$rn = $this->RowsNumber($result);

If ($RowNumber > 0 And $RowNumber < $rn) {

$RowNumber--;

Switch ($this->dbType) {

Case "pg":

$r = $this->FetchRow($result, $RowNumber);

Break;

Default:

$rn = $this->DataSeek($result, $RowNumber);

If ($rn) {

$r = $this->FetchRow($result);

If ($r) $this->curRow[$result] = $this->seek[$result];

} Else {

$r = False;

}

Break;

}

}

Return $r;

}

}

//********************************方法实现完毕****************************************//

?>

phpexcel是一个php的插件,他是用来读取excel文档的,如果没有它的话自己要写个这样的工具比较麻烦,现在有了现成的excel读取插件方便了很多。

php对excel文件进行循环读取

php对字符进行ascii编码转化,将字符转为十进制数

php对excel日期格式读取,并进行显示转化

php对汉字乱码进行编码转化

 代码如下 复制代码

<?php

require_once 'PHPExcel.php';

/**对excel里的日期进行格式转化*/
function GetData($val){
    $jd = GregorianToJD(1, 1, 1970);
    $gregorian = JDToGregorian($jd+intval($val)-25569);
    return $gregorian;/**显示格式为  “月/日/年”  */
}

$filePath = 'test.xlsx';

$PHPExcel = new PHPExcel();

/**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($filePath)){
    $PHPReader = new PHPExcel_Reader_Excel5();
    if(!$PHPReader->canRead($filePath)){
        echo 'no Excel';
        return ;
    }
}

$PHPExcel = $PHPReader->load($filePath);
/**读取excel文件中的第一个工作表*/
$currentSheet = $PHPExcel->getSheet(0);
/**取得最大的列号*/
$allColumn = $currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();
/**从第二行开始输出,因为excel表中第一行为列名*/
for($currentRow = 2;$currentRow <= $allRow;$currentRow++){
    /**从第A列开始输出*/
    for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){
        $val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue();/**ord()将字符转为十进制数*/
        if($currentColumn == 'A')
        {
            echo GetData($val)."t";
        }else{
            //echo $val;
            /**如果输出汉字有乱码,则需将输出内容用iconv函数进行编码转换,如下将gb2312编码转为utf-8编码输出*/
            echo iconv('utf-8','gb2312', $val)."t";
        }
    }
    echo "</br>";
}
echo "n";
?>

文章简单的介绍了从数据库连接到把用户提交的数据保存到mysql数据库的整个过程,一一讲解了操作方法,有需要的朋友看看下面五步。

1. 创建一个数据库连接
2. 发送一些不是必须的语句
3. 选择一个存储的数据库
4. 编写数据库插入语句
5. 发送这个语句
先看数据结构

 代码如下 复制代码

--------------------------------------

--
-- 表的结构 `guest`
--

CREATE TABLE IF NOT EXISTS `guest` (
  `id` int(11) NOT NULL auto_increment COMMENT '客户自增id',
  `name` varchar(16) NOT NULL COMMENT '客户名称',
  `email` varchar(60) default NULL COMMENT '电子信箱',
  `qq` varchar(11) default NULL COMMENT 'QQ号码',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--
-- 导出表中的数据 `guest`
--


-- --------------------------------------------------------

--
-- 表的结构 `post`
--

CREATE TABLE IF NOT EXISTS `post` (
  `id` int(11) NOT NULL auto_increment COMMENT 'post主键',
  `guest_id` varchar(11) NOT NULL COMMENT '发布人id',
  `post` text NOT NULL COMMENT '发布内容',
  `post_time` varchar(14) NOT NULL COMMENT '发布时间',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--
-- 导出表中的数据 `post`
--


--


详细的分析也就这么五个步骤了,那么我们开始第一步吧,利用PHP提供的内置函数mysql_connect来创建一个数据库链接,这个函数需要三个参数,格式如下:

Mysql_connect(‘数据库所在的主机’,’链接数据库的用户名’,’链接数据库的密码’)。这个函数返回一个数据库连接资源号。

看我们在post.php中的链接代码:

 代码如下 复制代码

 $con=mysql_connect('localhost','root','root') or die('链接数据库失败!');
mysql_query('set names utf8');
mysql_select_db('GuestBook');

第一行创建一个数据库连接,把资源号赋给变量$con,如果连接失败,结束程序的执行输出提示信息“链接数据库失败!”。

第二行发送一个字符集设定语句,让数据在数据库中的出入都使用utf8字符集。这个语句是可有可无的,其中的语句可以写成set names gbk或者set names gb2312等等我们需要的字符集。

第三行利用PHP提供的mysql_select_db函数来选择我们要使用的数据库。

值得注意的是,mysql_query这个函数本身有两个参数:第一个参数就是我们要发送的数据库执行语句sql,第二个参数是数据库连接的资源编号,如果第二个参数没有指定的话,那么程序就会查找最近一个链接资源,也就是说这个参数不是必须的。我们以上包括将来的写法都是没有第二个参数的,按照程序的上下文我们第二行的语句可以写作:
mysql_query(“set names utf8”,$con)这样也是正确的。

这个函数的返回值是布尔型的,如果语句成功执行就返回true否则返回false——了解这一点很重要。

好,到此为止我们的数据库连接已经就绪,开始组装我们的sql插入语句,看一下代码(post.php 第67-76行):

 代码如下 复制代码

 $insertSql="insert into guest (name,qq,email) values ('$name','$qq','$email')";
if(mysql_query($insertSql)){
 $guestid = mysql_insert_id();
}
else{
 echo $insertSql;
 echo mysql_error();
 echo "数据插入失败!";
 exit();
}

在这个片段的第一行中我们组建了一个sql的插入语句,这个看来没什么可说的,唯一点就是把变量写进这些语句并且用引号包裹起来——对于数字型的不需要引号。

第二句发送语句,并判断是否被成功执行。
这个地方需要说明:PHP中if判断中的语句是会被执行的,例如if($c=$a+$b)这样的语句被执行的顺序是,先计算里面的语句然后再对结果作出判断。所以执行之后$c的值是$a,$b之和,判断的时候是对$c作出的判读。

所以在这个地方if判断的是mysql_query($insertSql)的返回结果,语句已经发送到了数据库。

第三行出现的函数mysql_insert_id——获取最近一次插入数据的时候自增序列的值,我们这里获取的是guest表中的id,因为只有这个id才是自增的。以备后用。

这个片段的第五行到最后都是进行的错误处理,如果语句没有被成功执行,那么就执行这些程序,倒数第二行的exit();函数的意思是终止程序向下执行。

这时候我们已经把guest信息保存到了Mysql的GuestBook的guest表中了


看一下post.php文件

 代码如下 复制代码

//把以上插入取得的客户id和留言信息插入到post表中
$post_time = time();
$insertPostSql = "insert into post(guest_id,post,post_time) values('$guestid','$post','$post_time')";
if(mysql_query($insertPostSql)){
 echo <<<tem
 <script>
 alert("留言成功");
 location.href="index.php";
 </script>
tem;
}
else{
 echo <<<tem
 <script>
 alert("留言失败");
 location.href="index.php";
 </script>
tem;
}

在php连接mssql 时我突然发现nvarchar被截为255了,后面数据丢失了,而text也被截取了,下面我们查了手册做了如下解决办法

nvarchar被截为255解决办法

PHP 将 nvarchar 按照 MySQL 的 varchar 处理了吧!本文给出了解决方法:

 代码如下 复制代码
select cast(目标字段 as text) from 表名

假如你的 article 表中有个字段 summary 为 nvarchar,那么命令为:

 代码如下 复制代码

select cast(summary as text) from article


另一种情况text被截段解决办法

PHP 的配置文件 php.ini 中 MSSQL 部分:

[MSSQL]

 代码如下 复制代码

; Valid range 0 - 2147483647.  Default = 4096.
mssql.textlimit = 4096

; Valid range 0 - 2147483647.  Default = 4096.
mssql.textsize = 4096
请看这两个配置参数:

; Valid range 0 - 2147483647.  Default = 4096.
mssql.textlimit = 4096

; Valid range 0 - 2147483647.  Default = 4096.
mssql.textsize = 4096
相信你现在已经知道了问题的关键所在,只需要将这两个数值改大即可,不过,同时也要考虑:

; Maximum size of POST data that PHP will accept.
post_max_size = 2M

需要根据实际情况设置。

分享一篇关于php中缓存Memcache的Queue的用法,Memcache是一种缓存技术,可以提升程序的性能减轻服务器的压力。

 

 代码如下 复制代码
<?php
class MQ{
public static $client;
private static $m_real;
private static $m_front;
private static $m_data = array();
const QUEUE_MAX_NUM = 100000000;
const QUEUE_FRONT_KEY = '_queue_item_front';
const QUEUE_REAL_KEY = '_queue_item_real';
public static function setupMq($conf) {
self::$client = memcache_pconnect($conf);
self::$m_real = memcache_get(self::$client, self::QUEUE_REAL_KEY);
self::$m_front = memcache_get(self::$client, self::QUEUE_FRONT_KEY);
if (!isset(self::$m_real) || emptyempty(self::$m_real)) {
self::$real= 0;
}
if (!isset(self::$m_front) || emptyempty(self::$m_front)) {
self::$m_front = 0;
}
return self::$client;
}
public static function add($queue, $data) {
$result = false;
if (self::$m_real < self::QUEUE_MAX_NUM) {
if (memcache_add(self::$client, $queue.self::$m_real, $data)) {
self::mqRealChange();
$result = true;
}
}
return $result;
}
public static function get($key, $count) {
$num = 0;
for ($i=self::$m_front;$i<self::$m_front + $count;$i++) {
if ($dataTmp = memcache_get(self::$client, $key.$i)) {
self::$m_data[] = $dataTmp;
memcache_delete(self::$client, $key.$i);
$num++;
}
}
if ($num>0) {
self::mqFrontChange($num);
}
return self::$m_data;
}
private static function mqRealChange() {
memcache_add(self::$client, self::QUEUE_REAL_KEY, 0);
self::$m_real = memcache_increment(self::$client, self::QUEUE_REAL_KEY, 1);
}
private static function mqFrontChange($num) {
memcache_add(self::$client, self::QUEUE_FRONT_KEY, 0);
self::$m_front = memcache_increment(self::$client, self::QUEUE_FRONT_KEY, $num);
}
public static function mflush($memcache_obj) {
memcache_flush($memcache_obj);
}
public static function Debug() {
echo 'real:'.self::$m_real."<br>/r/n";
echo 'front:'.self::$m_front."<br>/r/n";
echo 'wait for process data:'.intval(self::$m_real - self::$m_front);
echo "<br>/r/n";
echo '<pre>';
print_r(self::$m_data);
echo '<pre>';
}
}
define('FLUSH_MQ',0);//CLEAN ALL DATA
define('IS_ADD',0);//SET DATA
$mobj = MQ::setupMq('127.0.0.1','11211');
if (FLUSH_MQ) {
MQ::mflush($mobj);
} else {
if (IS_ADD) {
MQ::add('user_sync', '1test');
MQ::add('user_sync', '2test');
MQ::add('user_sync', '3test');
MQ::add('user_sync', '4test');
MQ::add('user_sync', '5test');
MQ::add('user_sync', '6test');
} else {
MQ::get('user_sync', 10);
}
}
MQ::Debug();
?>


好了下面来看看用法

 

 代码如下 复制代码
MQ::setupMq('127.0.0.1','11211');//连接
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ:get($key, 10);//取出一定数量的数据
[!--infotagslink--]

相关文章

  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Intellij IDEA连接Navicat数据库的方法

    这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
  • MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
  • c#异步读取数据库与异步更新ui的代码实现

    这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
  • Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作。 User::find()->all(); //返回所有用户数据; User::findOne($id); //返回 主键...2015-11-24
  • MYSQL数据库使用UTF-8中文编码乱码的解决办法

    1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci” 或执行语句: 复制代码 代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创...2015-10-21
  • springBoot 项目排除数据库启动方式

    这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10
  • Linux 下使用shell脚本定时维护数据库的案例

    这篇文章主要介绍了Linux 下使用shell脚本定时维护数据库,本文通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • PHP连接公司内部服务器的MYSQL数据库的简单实例

    “主机,用户名,密码”得到连接、“数据库,sql,连接”得到结果,最后是结果的处理显示。当然,数据库连接是扩展库为我们完成的,我们能做的仅仅是处理结果而已。...2013-09-29
  • C#连接加密的Sqlite数据库的方法

    对数据加密分两种,一种是对数据库本身进行加密,另一种是对数据表中的数据进行加密,下面通过本文给大家介绍C#连接加密的Sqlite数据库的方法,感兴趣的朋友一起看看吧...2020-06-25
  • Java连接数据库oracle中文乱码解决方案

    这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-16
  • 深入分析C#连接Oracle数据库的连接字符串详解

    本篇文章是对C#连接Oracle数据库的连接字符串进行了详细的分析介绍,需要的朋友参考下...2020-06-25
  • node.js从数据库获取数据

    这篇文章主要为大家详细介绍了node.js从数据库获取数据的具体代码,nodejs可以获取具体某张数据表信息,感兴趣的朋友可以参考一下...2016-05-09