首页 > 开发 > PHP > 正文

PHP+redis实现添加处理投票的方法

2024-05-04 23:40:24
字体:
来源:转载
供稿:网友

这篇文章主要介绍了PHP+redis实现添加处理投票的方法,结合实例较为详细的分析了PHP+redis数据库操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了PHP+redis实现添加处理投票的方法。分享给大家供大家参考,具体如下:

 

 
  1. <?php 
  2. header("Content-Type:text/html;charset=utf-8"); 
  3. include 'lib/mysql.class.php'
  4. $mysql_obj = mysql::getConn(); 
  5. if(class_exists('Redis')){ 
  6. //redis  
  7. $redis = new Redis(); 
  8. $redis->pconnect('127.0.0.1', 6379); 
  9. if(isset($_SERVER['HTTP_REFERER'])){ 
  10. $url_md5 = md5($_SERVER['HTTP_REFERER']); 
  11. $adve_key = 'adve';  
  12. $adve_key_exists = 'adve_exists'
  13. if(!$redis->exists($adve_key_exists)){ 
  14. $list = $mysql_obj->fetch_array("select * from admin_online_adve"); 
  15. if($list){ 
  16. foreach ($list as $key => $value) { 
  17. $url_hash = md5($value['adve_url']); 
  18. $adve_hash_key = $adve_key.":".$url_hash; 
  19. $id = $value['id']; 
  20. $redis->set($adve_hash_key,$id); 
  21. $redis->set($adve_key_exists,true); 
  22. $adve_new_key = $adve_key.':'.$url_md5; 
  23. if($redis->exists($adve_new_key)){ 
  24. $adve_plus = $adve_new_key.":plus" ; 
  25. if(!$redis->exists($adve_plus)){ 
  26. $redis->set($adve_plus,1);  
  27. }else
  28. $redis->incr($adve_plus); 
  29. $num = $redis->get($adve_plus); 
  30. if($num >100){ 
  31. $id = $redis->get($adve_new_key); 
  32. // insert to sql; 
  33. $mysql_obj->query("update admin_online_adve set adve_num=adve_num+$num where id=$id"); 
  34. $redis->set($adve_plus,1); 
  35. ?> 
  36. <html> 
  37. <head> 
  38. <meta http-equiv="refresh" content="1;url=https://itunes.apple.com/cn/app/san-guo-zhi15-ba-wangno-da-lu/id694974270?mt=8"
  39. <title>统计</title> 
  40. </head> 
  41. <body> 
  42. <img src="loading.gif">Loading... 
  43. </body> 
  44. </html> 

其中php连接mysql类mysql.class.php如下:

 

 
  1. <?php 
  2. define("MYSQL_SQL_GETDATA", 1); 
  3. define("MYSQL_SQL_EXECUTE", 2); 
  4. class mysql_db{ 
  5. var $_server; //数据库服务器地址 
  6. var $_user; //数据库连接帐号 
  7. var $_password; //数据库连接密码 
  8. var $_dbname; //数据库名称 
  9. var $_persistency=false//是否使用持久连接 
  10. var $_isConnect = false//是否已经建立数据库连接 
  11. var $_charset="utf8"//数据库连接字符集 
  12. var $_isDebug = false//是否Debug模式 
  13. var $_sql=array(); //执行sql语句数组 
  14. var $_db_connect_id; //数据库连接对象标识 
  15. var $_result; //执行查询返回的值 
  16. var $_record; 
  17. var $_rowset; 
  18. var $_errno = 0; 
  19. var $_error = "connection error"
  20. var $_checkDB = false
  21. function mysql_db($dbserver, $dbuser, $dbpassword,$database,$persistency = false,$autoConnect=false,$checkdb = false
  22. $this->_server = $dbserver; 
  23. $this->_user = $dbuser; 
  24. $this->_password = $dbpassword; 
  25. $this->_dbname = $database; 
  26. $this->_persistency = $persistency; 
  27. $this->_autoConnect = $autoConnect; 
  28. $this->_checkDB = $checkdb; 
  29. if($autoConnect){ 
  30. $this->connection(); 
  31. function connection($newLink = false
  32. if (!$newLink){ 
  33. if($this->_isConnect && isset($this->_db_connect_id)){ 
  34. @mysql_close($this->_db_connect_id); 
  35. $this->_db_connect_id = ($this->persistency) ? @mysql_pconnect($this->_server, $this->_user, $this->_password):@mysql_connect($this->_server, $this->_user, $this->_password,$newLink); 
  36. if ($this->_db_connect_id) 
  37. if ($this->version() > '4.1'
  38. if ($this->_charset != ""
  39. @mysql_query("SET NAMES '".str_replace('-', '', $this->_charset)."'", $this->_db_connect_id); 
  40. if ($this->version() > '5.0'
  41. @mysql_query("SET sql_mode=''", $this->_db_connect_id); 
  42. //检测指定数据库是否连接成功 
  43. if ($this->_checkDB){ 
  44. $dbname = mysql_query('SELECT database()',$this->_db_connect_id); 
  45. $dbname = mysql_fetch_array($dbname,MYSQL_NUM); 
  46. $dbname = trim($dbname[0]); 
  47. }else
  48. $dbname = ''
  49. if ($dbname==$this->_dbname || $dbname==''){ 
  50. if (!@mysql_select_db($this->_dbname, $this->_db_connect_id)) 
  51. @mysql_close($this->_db_connect_id); 
  52. $this->_halt("cannot use database " . $this->_dbname); 
  53. }else
  54. if ($this->_checkDB && !$newLink){ 
  55. $this->connection(true); 
  56. return true
  57. else 
  58. $this->_halt('connect failed.',false); 
  59. function setCharset($charset){ 
  60. //$charset = str_replace('-', '', $charset); 
  61. $this->_charset = $charset; 
  62. function setDebug($isDebug=true){ 
  63. $this->_isDebug = $isDebug; 
  64. function query($sql,$type=''
  65. return $this->_runSQL($sql,MYSQL_SQL_GETDATA,$type); 
  66. function execute($sql) 
  67. return $this->_runSQL($sql,MYSQL_SQL_EXECUTE,"UNBUFFERED"); 
  68. function _runSQL($sql,$sqlType=MYSQL_SQL_GETDATA,$type = ''
  69. if ($type =="UNBUFFERED"){ 
  70. $this->_result = @mysql_unbuffered_query($sql,$this->_db_connect_id); 
  71. }else
  72. $this->_result = @mysql_query($sql,$this->_db_connect_id); 
  73. //测试模式下保存执行的sql语句 
  74. if($this->_isDebug){ 
  75. $this->_sql[]=$sql; 
  76. if ($this->_result) 
  77. return $sqlType==MYSQL_SQL_GETDATA?$this->getNumRows():$this->getAffectedRows(); 
  78. }else
  79. $this->_halt("Invalid SQL: ".$sql); 
  80. return false
  81. function next($result_type=MYSQL_ASSOC) { 
  82. $this->fetchRow($result_type);  
  83. return is_array($this->_record); 
  84. function f($name) { 
  85. if(is_array($this->_record)){ 
  86. return $this->_record[$name]; 
  87. }else
  88. return false
  89. function fetchRow($result_type=MYSQL_ASSOC) 
  90. if( $this->_result ) 
  91. $this->_record = @mysql_fetch_array($this->_result,$result_type); 
  92. return $this->_record; 
  93. }else
  94. return false
  95. function getAll($sql,$primaryKey="",$result_type=MYSQL_ASSOC) 
  96. if ($this->_runSQL($sql,MYSQL_SQL_GETDATA)>=0){ 
  97. return $this->fetchAll($primaryKey,$result_type); 
  98. }else
  99. return false
  100. function getOne($sql,$result_type=MYSQL_ASSOC) 
  101. if ($this->_runSQL($sql,MYSQL_SQL_GETDATA)>0){ 
  102. $arr = $this->fetchAll("",$result_type); 
  103. if(is_array($arr)){ 
  104. return $arr[0]; 
  105. }else
  106. return false
  107. function fetchAll($primaryKey = "",$result_type=MYSQL_ASSOC) 
  108. if ($this->_result) 
  109. $i = 0; 
  110. $this->_rowset = array(); 
  111. if ($primaryKey==""
  112. while($this->next($result_type)) 
  113. $this->_rowset[$i] = $this->_record; 
  114. $i++; 
  115. }else
  116. while($this->next($result_type)) 
  117. $this->_rowset[$this->f($primaryKey)] = $this->_record; 
  118. $i++; 
  119. return $this->_rowset; 
  120. }else
  121. //$this->_halt("Invalid Result"); 
  122. return false
  123. function checkExist($sql) 
  124. return $this->query($sql)>0?true:false
  125. function getValue($sql, $colset = 0) 
  126. if ($this->query($sql)>0){ 
  127. $this->next(MYSQL_BOTH); 
  128. return $this->f($colset); 
  129. }else
  130. return false
  131. function getNumRows() 
  132. return @mysql_num_rows($this->_result); 
  133. function getNumFields() 
  134. return @mysql_num_fields($this->_result); 
  135. function getFiledName($offset) 
  136. return @mysql_field_name($this->_result, $offset); 
  137. function getFiledType($offset) 
  138. return @mysql_field_type($this->_result, $offset); 
  139. function getFiledLen($offset) 
  140. return @mysql_field_len($this->_result, $offset); 
  141. function getInsertId() 
  142. return @mysql_insert_id($this->_db_connect_id); 
  143. function getAffectedRows() 
  144. return @mysql_affected_rows($this->_db_connect_id); 
  145. function free_result() 
  146. $ret = @mysql_free_result($this->_result); 
  147. $this->_result = 0; 
  148. return $ret; 
  149. function version() { 
  150. return @mysql_get_server_info($this->_db_connect_id); 
  151. function close() { 
  152. return @mysql_close($this->_db_connect_id); 
  153. function sqlOutput($isOut = true, $all = true){ 
  154. if($all){ 
  155. $ret = implode("<br>",$this->_sql); 
  156. }else
  157. $ret = $this->_sql[count($this->_sql)-1]; 
  158. if ($isOut){ 
  159. echo $ret; 
  160. }else
  161. return $ret; 
  162. function _halt($msg="Session halted.",$getErr=true) { 
  163. if($this->_isDebug){ 
  164. if($getErr){ 
  165. $this->_errno = @mysql_errno($this->_db_connect_id); 
  166. $this->_error = @mysql_error($this->_db_connect_id); 
  167. printf("<b>MySQL _error</b>: %s (%s)<br></font>/n",$this->_errno,$this->_error); 
  168. die($msg); 
  169. }else
  170. die("Session halted."); 
  171. ?> 

希望本文所述对大家PHP程序设计有所帮助。


注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表