PHP使用redis实现统计缓存mysql压力的方法

本文实例讲述了PHP使用redis实现统计缓存mysql压力的方法。分享给大家供大家参考,具体如下:

<?php
  header("Content-Type:text/html;charset=utf-8");
  include 'lib/mysql.class.php';
  $mysql_obj = mysql::getConn();
  //redis 
  $redis = new Redis();
  $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 * from user_online_adve");
    if($list){
      foreach ($list as $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);
        //$redis->hmset($adve_hash_key, array('id' =>$id));
        //print_r($redis->get($adve_hash_key));
      }
    }
  }
  $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 >10){
          $id = $redis->get($adve_new_key);
          // insert to sql;
          $mysql_obj->query("update user_online_adve set adve_num=adve_num+$num where id=$id");
          $redis->set($adve_plus,1);
        }
      }
  }
  header('HTTP/1.0 301 Moved Permanently');
  header('Location: https://itunes.apple.com/cn/app/san-guo-zhi15-ba-wangno-da-lu/id694974270?mt=8');
/*
  if(){
      $adve_plus = $adve_key.":plus" ;
      if($redis->exists($adve_plus)){
        $redis->incr($adve_plus);
      }else{
        $redis->set($adve_plus,1); 
      }
      echo $redis->get($adve_plus);
  }
  foreach ($list as $key => $value) {
      $url_hash = md5($value['adve_url']);
      $id = $value['id'];
      $adve_num = $value['adve_num'];
      $adve_plus = $adve_key.":plus" ;
      if($redis->exists($adve_plus)){
        $redis->incr($adve_plus);
      }else{
        $redis->set($adve_plus,1); 
      }
      echo $redis->get($adve_plus);
      //if($redis->)
      //$redis->hmset($adve_key, array('id' =>$id, 'adve_num'=>$adve_num));
      //print_r($redis->hmget("adve:$url_hash", array('adve_num')));
  }
    print_r($list);
*/

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

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
本文实例讲述了PHP实现的一致性哈希算法。分享给大家供大家参考,具体如下: ?php/** * Flexihash - A simple consistent hashing implementation for PHP. * * The MIT License * * Copyright (c) 2008 Paul Annesley * * Permission is hereby granted, free of charge, to any person obtaining a copy * of
下面这个正则验证用户名的方法原则是这样的用户名必须是由字母带数字带定划线组成了,下面一起来看看例子吧. 1.检查用户名 是否符合规定“两位以上的字母,数字,或者下划线”,代码如下: /** * 检查用户名是否符合规定 * * @param STRING $username 要检查的用户名 * @return TRUE or FALSE */ function is_username($username) { $strlen = strlen($username); if (!preg_match("/^[

php验证码生成代码 - 2015-11-13 17:11:08

验证码通常是用来安全保证我们网站注册或登录不被注入的,但为了更安全我们通常会生成一些混合验证码了,下面一起来看看例子. 在我们开发登录模块或者是论坛的灌水模块的时候,为了防止恶意提交,需要用到验证码,验证码就是用来区分人和机器的一种手段,当然这种手段不是万无一失,但总归会起到一些作用. 验证码的实现需要GD库的支持,没有开启GD库的童鞋需开启GD库,其实验证码的制作和使用非常的简单,仅仅只是需要4个步骤就可以搞定:创建验证码底图,显示验证码内容,增加干扰元素,输出验证码,下面我们来进行步骤拆分: 第一步:

php验证手机号码 - 2015-11-13 15:11:46

大家都应该有这个常识,中国的手机号码都是以数字“1”开头,然后利用“0~9”10个数字组成的11位数字组合,那么我们的验证规则肯定要根据这个思路来写。 根据上面的简单思路,我们便可以写下以下的验证代码,代码如下: ?php //本代码仅仅是提供一些思路 //距离实际应用还有一些距离 $mobile = '15858588585'; //下面的1便是手机的第一位数字必须为数字1 //[0-9]指后面的数字均为0~9的数字 //{9}这中间的9指的是手机号码除了第一位数外,其他要重复10次,刚好就是11位数了

php+mysql实现无限级分类 - 2015-11-13 15:11:46

项目思路分析: 一个PHP项目要用到分类,但不确定分几级,所以就想做成无限级分类。 一开始想是按以前一样,数据库建4个值,如下: id: 自增 | pid: 父类ID | xid: 排序ID | classname: 分类名称 后来想到这种在读取数据时和修改时比较不方便,而且在产品读取时尤其不便,于时改成了以下的方案: 在Mysql的表中新增了一个字段,现 数据库 如下: 表名 w_faqclass: id: 自增 | pid: 父类ID | xid: 排序ID | classname: 分类名称 | r

分享10段PHP常用代码 - 2015-11-13 14:11:31

本文汇集PHP开发中经常用到的十段代码,包括Email、64位编码和解码、解压缩、64位编码、解析JSON等,希望对您有所帮助。 1、使用PHP Mail函数发送Email $to = "viralpatel.net@gmail.com"; $subject = "VIRALPATEL.net"; $body = "Body of your message here you can use HTML too. e.g.

Thinkphp无限级分类代码 - 2015-11-13 14:11:12

本篇就一点一点教大家写一个无限级分类出来,其实掌握一个知识,最主要的是要掌握无限级分类的逻辑,那么写起来就很容易的多了。 首先看数据库表:xp_cate 控制器:CateAction.class.php ?phpclass CateAction extends Action{function index(){$cate=M('Cate');$list=$cate-field("id,name,pid,path,concat(path,'-',id) as bpath")-order('bpath')-se

2款PHP无限级分类实例代码 - 2015-11-13 04:11:02

本文章总结了两款PHP无限级分类实现程序代码,有需要学习的朋友可参考一下。 主要思路: 首先看第三行和第四行,父类ID(PARENTID)的值是1,表示属于id=1这个类的子类,而,一,二两行因为是一级分类,没有上级分类,所以父类ID(PARENTID)的值是0,表示初级分类,依次类推便实现了无限级分类。最终的效果是: ├一级分类A ├─┴二级分类A ├─┴二级分类B ├一级分类B 然后就是程序,这里以PHP作为描述语言,可以很方便的改成其他语言,因为原理相似,就是一个递归而已。 ?php$dbhost
PHP用mb_string函数库处理与windows相关中文字符 昨天想批处理以前下载的一堆文件,把文件里的关键内容用正则匹配出来,集中处理。在操作文件时遇到一个问题,就是windows操作系统中的编码问题。 我们都知道windows中(当然是中文版),文件名和文件内容等编码都是gbk,而我们在开发过程中,IDE里的编码则是UTF-8,(这里不讨论为什么等等问题, 只考虑怎么把编码转变成一样的)所以导致我写的UTF-8编码的正则模式字符串中的中文在gbk编码的文件中并不能正确匹配。 一开始,我并没有什么办
set_error_handler() 函数设置用户自定义的错误处理函数。该函数用于创建运行时期间的用户自己的错误处理方法。该函数会返回旧的错误处理程序,若失败,则返回 null。 下面来看一些例子。 set_error_handler() PHP从4.1.0开始提供了自定义错误处理句柄的功能函数set_error_handler(),但很少数脚本编写者知道。set_error_handler这个函数可以很好地防止错误路径泄露,当然还有其它更多的作用。 1.可以用来屏蔽错误。 出现错误一来会把一些信息暴漏