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程序设计有所帮助。