PHP+redis实现添加处理投票的方法
本文实例讲述了PHP+redis实现添加处理投票的方法。分享给大家供大家参考,具体如下:
<?php
header("Content-Type:text/html;charset=utf-8");
include'lib/mysql.class.php';
$mysql_obj=mysql::getConn();
if(class_exists('Redis')){
//redis
$redis=newRedis();
$redis->pconnect('127.0.0.1',6379);
if(isset($_SERVER['HTTP_REFERER'])){
$url_md5=md5($_SERVER['HTTP_REFERER']);
}
$adve_key='adve';
$adve_key_exists='adve_exists';
if(!$redis->exists($adve_key_exists)){
$list=$mysql_obj->fetch_array("select*fromadmin_online_adve");
if($list){
foreach($listas$key=>$value){
$url_hash=md5($value['adve_url']);
$adve_hash_key=$adve_key.":".$url_hash;
$id=$value['id'];
$redis->set($adve_hash_key,$id);
$redis->set($adve_key_exists,true);
}
}
}
$adve_new_key=$adve_key.':'.$url_md5;
if($redis->exists($adve_new_key)){
$adve_plus=$adve_new_key.":plus";
if(!$redis->exists($adve_plus)){
$redis->set($adve_plus,1);
}else{
$redis->incr($adve_plus);
$num=$redis->get($adve_plus);
if($num>100){
$id=$redis->get($adve_new_key);
//inserttosql;
$mysql_obj->query("updateadmin_online_advesetadve_num=adve_num+$numwhereid=$id");
$redis->set($adve_plus,1);
}
}
}
}
?>
<html>
<head>
<metahttp-equiv="refresh"content="1;url=https://itunes.apple.com/cn/app/san-guo-zhi15-ba-wangno-da-lu/id694974270?mt=8">
<title>统计</title>
</head>
<body>
<imgsrc="loading.gif">Loading...
</body>
</html>
其中php连接mysql类mysql.class.php如下:
<?php
define("MYSQL_SQL_GETDATA",1);
define("MYSQL_SQL_EXECUTE",2);
classmysql_db{
var$_server;//数据库服务器地址
var$_user;//数据库连接帐号
var$_password;//数据库连接密码
var$_dbname;//数据库名称
var$_persistency=false;//是否使用持久连接
var$_isConnect=false;//是否已经建立数据库连接
var$_charset="utf8";//数据库连接字符集
var$_isDebug=false;//是否Debug模式
var$_sql=array();//执行sql语句数组
var$_db_connect_id;//数据库连接对象标识
var$_result;//执行查询返回的值
var$_record;
var$_rowset;
var$_errno=0;
var$_error="connectionerror";
var$_checkDB=false;
functionmysql_db($dbserver,$dbuser,$dbpassword,$database,$persistency=false,$autoConnect=false,$checkdb=false)
{
$this->_server=$dbserver;
$this->_user=$dbuser;
$this->_password=$dbpassword;
$this->_dbname=$database;
$this->_persistency=$persistency;
$this->_autoConnect=$autoConnect;
$this->_checkDB=$checkdb;
if($autoConnect){
$this->connection();
}
}
functionconnection($newLink=false)
{
if(!$newLink){
if($this->_isConnect&&isset($this->_db_connect_id)){
@mysql_close($this->_db_connect_id);
}
}
$this->_db_connect_id=($this->persistency)?@mysql_pconnect($this->_server,$this->_user,$this->_password):@mysql_connect($this->_server,$this->_user,$this->_password,$newLink);
if($this->_db_connect_id)
{
if($this->version()>'4.1')
{
if($this->_charset!="")
{
@mysql_query("SETNAMES'".str_replace('-','',$this->_charset)."'",$this->_db_connect_id);
}
}
if($this->version()>'5.0')
{
@mysql_query("SETsql_mode=''",$this->_db_connect_id);
}
//检测指定数据库是否连接成功
if($this->_checkDB){
$dbname=mysql_query('SELECTdatabase()',$this->_db_connect_id);
$dbname=mysql_fetch_array($dbname,MYSQL_NUM);
$dbname=trim($dbname[0]);
}else{
$dbname='';
}
if($dbname==$this->_dbname||$dbname==''){
if(!@mysql_select_db($this->_dbname,$this->_db_connect_id))
{
@mysql_close($this->_db_connect_id);
$this->_halt("cannotusedatabase".$this->_dbname);
}
}else{
if($this->_checkDB&&!$newLink){
$this->connection(true);
}
}
returntrue;
}
else
{
$this->_halt('connectfailed.',false);
}
}
functionsetCharset($charset){
//$charset=str_replace('-','',$charset);
$this->_charset=$charset;
}
functionsetDebug($isDebug=true){
$this->_isDebug=$isDebug;
}
functionquery($sql,$type='')
{
return$this->_runSQL($sql,MYSQL_SQL_GETDATA,$type);
}
functionexecute($sql)
{
return$this->_runSQL($sql,MYSQL_SQL_EXECUTE,"UNBUFFERED");
}
function_runSQL($sql,$sqlType=MYSQL_SQL_GETDATA,$type='')
{
if($type=="UNBUFFERED"){
$this->_result=@mysql_unbuffered_query($sql,$this->_db_connect_id);
}else{
$this->_result=@mysql_query($sql,$this->_db_connect_id);
}
//测试模式下保存执行的sql语句
if($this->_isDebug){
$this->_sql[]=$sql;
}
if($this->_result)
{
return$sqlType==MYSQL_SQL_GETDATA?$this->getNumRows():$this->getAffectedRows();
}else{
$this->_halt("InvalidSQL:".$sql);
returnfalse;
}
}
functionnext($result_type=MYSQL_ASSOC){
$this->fetchRow($result_type);
returnis_array($this->_record);
}
functionf($name){
if(is_array($this->_record)){
return$this->_record[$name];
}else{
returnfalse;
}
}
functionfetchRow($result_type=MYSQL_ASSOC)
{
if($this->_result)
{
$this->_record=@mysql_fetch_array($this->_result,$result_type);
return$this->_record;
}else{
returnfalse;
}
}
functiongetAll($sql,$primaryKey="",$result_type=MYSQL_ASSOC)
{
if($this->_runSQL($sql,MYSQL_SQL_GETDATA)>=0){
return$this->fetchAll($primaryKey,$result_type);
}else{
returnfalse;
}
}
functiongetOne($sql,$result_type=MYSQL_ASSOC)
{
if($this->_runSQL($sql,MYSQL_SQL_GETDATA)>0){
$arr=$this->fetchAll("",$result_type);
if(is_array($arr)){
return$arr[0];
}
}else{
returnfalse;
}
}
functionfetchAll($primaryKey="",$result_type=MYSQL_ASSOC)
{
if($this->_result)
{
$i=0;
$this->_rowset=array();
if($primaryKey=="")
{
while($this->next($result_type))
{
$this->_rowset[$i]=$this->_record;
$i++;
}
}else{
while($this->next($result_type))
{
$this->_rowset[$this->f($primaryKey)]=$this->_record;
$i++;
}
}
return$this->_rowset;
}else{
//$this->_halt("InvalidResult");
returnfalse;
}
}
functioncheckExist($sql)
{
return$this->query($sql)>0?true:false;
}
functiongetValue($sql,$colset=0)
{
if($this->query($sql)>0){
$this->next(MYSQL_BOTH);
return$this->f($colset);
}else{
returnfalse;
}
}
functiongetNumRows()
{
return@mysql_num_rows($this->_result);
}
functiongetNumFields()
{
return@mysql_num_fields($this->_result);
}
functiongetFiledName($offset)
{
return@mysql_field_name($this->_result,$offset);
}
functiongetFiledType($offset)
{
return@mysql_field_type($this->_result,$offset);
}
functiongetFiledLen($offset)
{
return@mysql_field_len($this->_result,$offset);
}
functiongetInsertId()
{
return@mysql_insert_id($this->_db_connect_id);
}
functiongetAffectedRows()
{
return@mysql_affected_rows($this->_db_connect_id);
}
functionfree_result()
{
$ret=@mysql_free_result($this->_result);
$this->_result=0;
return$ret;
}
functionversion(){
return@mysql_get_server_info($this->_db_connect_id);
}
functionclose(){
return@mysql_close($this->_db_connect_id);
}
functionsqlOutput($isOut=true,$all=true){
if($all){
$ret=implode("<br>",$this->_sql);
}else{
$ret=$this->_sql[count($this->_sql)-1];
}
if($isOut){
echo$ret;
}else{
return$ret;
}
}
function_halt($msg="Sessionhalted.",$getErr=true){
if($this->_isDebug){
if($getErr){
$this->_errno=@mysql_errno($this->_db_connect_id);
$this->_error=@mysql_error($this->_db_connect_id);
printf("<b>MySQL_error</b>:%s(%s)<br></font>/n",$this->_errno,$this->_error);
}
die($msg);
}else{
die("Sessionhalted.");
}
}
}
?>
希望本文所述对大家PHP程序设计有所帮助。