php后台操作以及一些减缓服务器压力的问题

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

  一: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点跑到公司来维护代码,也是不容易啊!!

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

      

        

    

    

      

时间: 2024-10-22 19:05:41

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

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

一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权限限制等,但是,对应一些我们经常频频使用的文件,比方说,开发的新闻发布系统,我们不希望很多用户都读取数据库才显示结果,这样一方面消耗了服务器的资源,另一方面占去了浏览者大量可贵的响应时间,所有,有了"静态页面话"的做法,当前很多网站都采用这种技术,一般都是由管理后台控制,或者生成html直

【技测】游戏上线前服务器压力测试应该怎么做

伴随手游上线推广,玩家爆发式增长,不少开发者都遇到过玩家冲爆服务器的情况,因此降低服务器崩溃的风险就显得非常重要.游戏上线前如果做了服务器压力测试帮助会很大.今天就来说说压力测试. 编写脚本机器人 为了在游戏上线前实际掌握服务器的承载能力,在游戏的开发流程末端都会引入压力测试.最普遍的一种测试方式是机器人模拟测试.通过脚本机器人在游戏中模拟一个玩家可能进行的操作,几千个机器人在服务器里面连续执行各种操作,测试各处功能的完整度. 脚本机器人是大部分CP在上线前的一个重要压测手段,因为这是低成本下最

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

一.连接linux服务器,创建数据文件 php yii migrate/create user_log 二.修改数据文件 console/migrations/m150721_032220_admin_log.php <?php use yii\db\Schema; use yii\db\Migration; class m150721_032220_admin_log extends Migration { public function up() { $tableOptions = null

服务器压力测试 性能测试 AB、Webbench、Tsung

原文:https://blog.csdn.net/Jerome_s/article/details/47030671 负载生成器是一些生成用于测试的流量的程序.它们可以向你展示服务器在高负载的情况下的性能,以及让你能够找出服务器可能存在的问题.为了得到更加客观和准确的数值,应该从远程访问.局域网访问和本地等多个方面进行全方位的测试.一般用127.0.0.1进行本机测试. Apache Benchmark ab 命令会创建很多的并发访问线程,模拟多个访问者同时对某一 URL 进行访问,可用来测试

无法执行该操作,因为链接服务器 &quot;xxxxx&quot; 的 OLE DB 访问接口 &quot;SQLNCLI&quot; 无法启动分布式事务

在存储过程中使用事务,并且使用链接服务器时,报类似下面的错误 链接服务器"****"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "没有活动事务.".消息 7391,级别 16,状态 2,过程 proc_SyncDiliveryData,第 20 行无法执行该操作,因为链接服务器 "*****r" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务. 度娘了很久,找到了

jQuery动态加载JS以减少服务器压力

如果您要创建一个web2.0的应用程序,那么你的网页会包括大量的JavaScript文件,这些可能会拖慢您的网页.因此,动态加载JavaScript代码到您的网页是一个好主意,即只有当实用他们的时候加载它们.这种策略可以帮助你减少你的网页的加载时间. 幸运的是,jQuery提供了一个内置的实用函数,$getScript()为我们提供了这样的方法.来实现在网页动态的功能.来看看这个函数的语法: $.getScript(url,callback) 获取url参数所指定的脚本,使用一个GET请求到指定

asp.net后台操作javascript:confirm返回值

在asp.net中使用confirm可以分为两种: 1.没有使用ajax,confirm会引起也面刷新 2.使用了ajax,不会刷新 A.没有使用ajax,可以用StringBuilder来完成. (一)asp.net用StringBuilder控制后台操作javascript:confirm返回值,此方法比较烦琐1.后台启动事件 StringBuilder sb = new StringBuilder();        sb.Append("<script language='java

[转]web服务器压力测试工具

http_load学习心得: 测试网站每秒所能承受的平均访问量(吞吐量) http_load -parallel 5 -fetches 1000 urls.txt这段命令行是同时使用5个进程,随机访问urls.txt中的网址列表,总共访问1000次.运行之后的结果: 1000 fetches, 5 max parallel, 6e+06 bytes, in 58.1026 seconds6000 mean bytes/connection17.2109 fetches/sec, 103266 b

通过post把base64的值传到后台,然后由后台解析为图片存储到服务器里

1 // 压缩上传图片的插件 2 // 通过post把base64的值传到后台,然后由后台解析为图片存储到服务器里 3 $imgdata_base64=empty($_REQUEST['input_imgdata_base64'])?"":$_REQUEST['input_imgdata_base64']; 4 if(!$imgdata_base64){ 5 show_aomai_message_for_mobile('请上传身份证图片...','返回','','warning');