上次提到一个微信投票系统,做了一个微信重定向解决了,一个授权复用的问题,昨天投票系统正式投入使用;测试的时候没有问题,上线后出现了一点小问题,

  一:php页面参数接受和php中 switch 那个先执行?

    答案: 是switch先执行

  例:在index.php页面 

      header("location:/api/wx.php?action=putprofile&accessToken=".$accessToken."&openId=".$openId."&headImgUrl=".$headImgUrl."&nickName=".$nickName);

      实现跳转到wx.php页面里面带着几个参数 accessToken openId headImgUrl nickName  (php中字符链接符 是 "  .  " );

  下面我在wx.php页面进行接收

        

  $accessToken= $_GET["accessToken"];
  $openid= $_GET["openId"];
  $headimgurl= $_GET["headImgUrl"];
  $nickname = $_GET["nickName"];

  //接收参数

  switch($_GET['action']){

    case "initprofile":
      initprofile();
    break;
    case "getprofile";
      getprofile();
    break;
    case "putprofile";
      putprofile();
    break;
  }

  

  function putprofile($openid, $nickname, $headimgurl){
 
    // echo "<script>alert('$openid');</script>";
    // echo "<script>alert('$headimgurl');</script>";
    // echo "<script>alert('$nickname');</script>";
    //die("INSERT INTO v2016_member (mem_nickname, mem_photo, mem_openid, mem_regdate) VALUES({$nickname}, {$headimgurl},     {$$openid}, {$time}");
    // $user = db_exec_query("SELECT mem_id FROM v2016_member WHERE mem_openid = '{$openid}' LIMIT 1");
    $sql = "SELECT mem_id FROM v2016_member WHERE mem_openid = '{$openid}' LIMIT 1";
    $result = mysql_query($sql);
    if(!$row = mysql_fetch_assoc($result)){
      // echo "<script>alert('gengxin');</script>";
    $time = time();
    $ins_id = db_exec_update("INSERT INTO v2016_member (mem_nickname, mem_photo, mem_openid, mem_regdate) VALUES('{$nickname}',     '{$headimgurl}', '{$openid}', '{$time}'); ");
    }
    $user = db_exec_query("SELECT * FROM v2016_member WHERE mem_openid = '{$openid}' LIMIT 1");
    $info = array(
    'mem_id' => $user[0]['mem_id'],
    'mem_nickname' => json_decode($user[0]['mem_nickname']),
    'mem_photo' => $user[0]['mem_photo'],
    'mem_openid' => $user[0]['mem_openid'],
    );
    //修改php中session的默认时间
    // $lifeTime = 46 * 3600;
    // session_set_cookie_params($lifeTime);
    session_start();
    $_SESSION['user'] = $info;
    header("location:/band.php");
  }

  如上述代码所示,开始我以为在执行  putprofile()这个函数的时候 上面那四个参数已经拿到了呢,当时就是往数据库里插不进去,我在putprofile()alert 了一下那四个参数才知道原来在函数执行的时候还没执行

  $accessToken= $_GET["accessToken"];
  $openid= $_GET["openId"];
  $headimgurl= $_GET["headImgUrl"];
  $nickname = $_GET["nickName"];

  这些代码可把我坑坏了,后来把这些获取参数的代码放到了putprofile()里面才成功的把字段插入到了数据库里面,

  原因是:switch的比$_GET先执行

  二:SESSION的默认保存时间

    php中SESSION的默认保存时间是 1440秒 意思就是时间一过这个缓存就会被清掉

    可以手动去修改两种方法:

      1:去服务器配置php环境的一个ini的文件里找到 session.gc_maxlifetime 改成你想要的数值就可以了,建议不要改的太长,以免造成服务器内存饱满,响应过慢或者直接瘫痪

       2:代码实现:

        // $lifeTime = 46 * 3600;
        // session_set_cookie_params($lifeTime); 

  三:服务器压力问题:

    这个问题很广很多情况下都会造成服务器压力过大,造成响应过慢,对于写代码的程序猿来说要做的就是把代码优化,至于怎么优化减轻服务器压力,太复杂就不多说了,可以自行百度;

   接下来说说我遇到的问题:

      1:我的数据库是操作是php MYSQL代码实现的;

      2: 多余的代码很多

      3:里面有比较多的 SELECT , update等一些操作,没有做到函数复用;

      4:服务器运行内存也比较小;

    在上述几个情况下,一开始代码没什么问题,后来随着用户越来越多,越来越多,我突然发现打开这个投票系统的响应时间变长了,我ping了一下看了一个速度

        

     发现这个IP的响应时间  最短 7ms 最长 13ms 平均8ms 这也太慢了,对于用户来说,体验太不好了,一直反映打开太慢

     后来我就检查我的代码

      发现里面有很多的SELECT , update等一些操作,并且多余的代码比较多,要知道本身MYSQL本身会占用较大虚拟内存,再加上数据库操作很耗内存,就造成了服务器压力比较大,响应时间变长的后果;

      所以在php页面中药尽量减少数据库的操作,同事对代码做良好的优化,不然就会造成服务器压力大,响应慢的结果。

    就这些吧,今天早上我7点跑到公司来维护代码,也是不容易啊!!

      快五一了,预祝快乐!!!!

      

        

    

    

      

php后台操作以及一些减缓服务器压力的问题的更多相关文章

  1. 减少服务器压力php生成静态xml文件

    一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...

  2. YII2 实现后台操作记录日志(转)

    一.连接linux服务器,创建数据文件 php yii migrate/create user_log 二.修改数据文件 console/migrations/m150721_032220_admin ...

  3. YII2 实现后台操作记录日志

    一.连接linux服务器,创建数据文件 php yii migrate/create user_log 二.修改数据文件 console/migrations/m150721_032220_admin ...

  4. xadmin后台页面定制和添加服务器监控组件

    xadmin定制 项目需要添加服务器监控页面,碍于xadmin不是很好自定义页面,之前写过插件,太麻烦了,还是直接改源码 原理其实很简单,因为xadmin的处理流程和django类似,都是通过拦截UR ...

  5. 网站服务器压力Web性能测试(1):Apache Bench:Apache自带服务器压力测试工具

    一个网站或者博客到底能够承受多大的用户访问量经常是我们在用VPS或者独立服务器搭建网站了最关心的问题,还有不少人喜欢对LNMP或者LAMP进行一些优化以便提高Web性能,而优化后到底有多大的效果,就需 ...

  6. 降低web服务器压力

    一.越来越多的并发连接数 现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种常态,给Web系统带来不小的挑战.以最简单粗暴的方式解决,就是增加Web系统的机器和升级硬件配置.虽然现 ...

  7. Android操作HTTP实现与服务器通信(转)

    Android操作HTTP实现与服务器通信   本示例以Servlet为例,演示Android与Servlet的通信. 众所周知,Android与服务器通信通常采用HTTP通信方式和Socket通信方 ...

  8. juqery 实现 防止当前页面重复点击,以减轻服务器压力

    <script> //防止当前页面重复点击,以减轻服务器压力 $(document).ready(function () { var current_url = location.path ...

  9. C#先执行一段sql等后台操作后再提示是否后续操作confrim

    应用场景:例如选择一个单据号打击打印后先去数据库检索是否有打打印过,如果有则提示,已打印,是否再打 如果没有则不提示,直接进行打印. 实现原理:多做一个隐藏按钮去实现打印功能,页面上的打印按钮则进行数 ...

随机推荐

  1. bzoj4698 / P2463 [SDOI2008]Sandy的卡片

    P2463 [SDOI2008]Sandy的卡片 直接二分长度暴力匹配....... 跑的还挺快 (正解是后缀数组的样子) #include<iostream> #include<c ...

  2. 【Python044--魔法方法:简单定制】

    一.简单定制 基本要求: -- 定制一个计时器的类 -- start和stop代表开始计时和停止计时 -- 假设计时器对象t1,print(t1)和直接调用t1均显示结果 -- 当计时器未启动或停止计 ...

  3. topcoder srm 430 div1

    problem1 link 其实就是找到一个数字$t$,使得$x$的二进制为1 的位上$t$也都为1.然后$t$删掉所有那些$x$为1的二进制位就是$k$. problem2 link 设所有合法的边 ...

  4. 如果让我重来,我会选择C和(或者)Python。

    如果让我重来,我会选择C和(或者)Python.Python语法和库更丰富,上手更容易,使用更方便.C简单直接,学习成本不高,贴近底层,能帮助了解底层细节.先强调:1. 语言只是工具,假以时日,你都会 ...

  5. POJ 3264 Balanced Lineup (线段树查找最大最小值)

    http://poj.org/problem?id=3264 题意:给你一个长度为n的序列a[N] (1 ≤ N ≤ 50000),询问Q(1 ≤ Q ≤ 200000) 次,每次输出[L, R]区间 ...

  6. 牛客竞赛&&mjt的毒瘤赛

    题目链接 https://ac.nowcoder.com/acm/contest/368/F 思路 询问可以离线. 然后每个节点上建32个权值线段树(权值不大,其实只要20颗) 记录每一位权值为x(如 ...

  7. Minikube 安装

    安装Minikube 在容器编排工具中安装配置最复杂的就是Kubernetes,想要运行一个简单的容器集群环境,对于没有使用过Kubernetes的人来说,需要花费一定的时间去理解各组件的概念和功能, ...

  8. qvalue: Check that you have valid p-values or use a different range of lambda

    ERROR: The estimated pi0 <= 0. Check that you have valid p-values or use a different range of lam ...

  9. 论文笔记之 SST: Single-Stream Temporal Action Proposals

    SST: Single-Stream Temporal Action Proposals 2017-06-11 14:28:00 本文提出一种 时间维度上的 proposal 方法,进行行为的识别.本 ...

  10. Shiro学习笔记(一)

    首先展示一下项目的结构目录 工程是用maven创建的   主要是方便管理Jar包  maven的  pom文件中所需要的jar包 <dependencies> <dependency ...