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点跑到公司来维护代码,也是不容易啊!!
快五一了,预祝快乐!!!!
php后台操作以及一些减缓服务器压力的问题的更多相关文章
- 减少服务器压力php生成静态xml文件
一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...
- YII2 实现后台操作记录日志(转)
一.连接linux服务器,创建数据文件 php yii migrate/create user_log 二.修改数据文件 console/migrations/m150721_032220_admin ...
- YII2 实现后台操作记录日志
一.连接linux服务器,创建数据文件 php yii migrate/create user_log 二.修改数据文件 console/migrations/m150721_032220_admin ...
- xadmin后台页面定制和添加服务器监控组件
xadmin定制 项目需要添加服务器监控页面,碍于xadmin不是很好自定义页面,之前写过插件,太麻烦了,还是直接改源码 原理其实很简单,因为xadmin的处理流程和django类似,都是通过拦截UR ...
- 网站服务器压力Web性能测试(1):Apache Bench:Apache自带服务器压力测试工具
一个网站或者博客到底能够承受多大的用户访问量经常是我们在用VPS或者独立服务器搭建网站了最关心的问题,还有不少人喜欢对LNMP或者LAMP进行一些优化以便提高Web性能,而优化后到底有多大的效果,就需 ...
- 降低web服务器压力
一.越来越多的并发连接数 现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种常态,给Web系统带来不小的挑战.以最简单粗暴的方式解决,就是增加Web系统的机器和升级硬件配置.虽然现 ...
- Android操作HTTP实现与服务器通信(转)
Android操作HTTP实现与服务器通信 本示例以Servlet为例,演示Android与Servlet的通信. 众所周知,Android与服务器通信通常采用HTTP通信方式和Socket通信方 ...
- juqery 实现 防止当前页面重复点击,以减轻服务器压力
<script> //防止当前页面重复点击,以减轻服务器压力 $(document).ready(function () { var current_url = location.path ...
- C#先执行一段sql等后台操作后再提示是否后续操作confrim
应用场景:例如选择一个单据号打击打印后先去数据库检索是否有打打印过,如果有则提示,已打印,是否再打 如果没有则不提示,直接进行打印. 实现原理:多做一个隐藏按钮去实现打印功能,页面上的打印按钮则进行数 ...
随机推荐
- 【题解】Luogu P2604 [ZJOI2010]网络扩容
原题传送门:P2604 [ZJOI2010]网络扩容 这题可以说是板题 给你一个图,先让你求最大流 再告诉你,每条边可以花费一些代价,使得流量加一 问至少花费多少代价才能使最大流达到k 解法十分简单 ...
- 让bat批处理后台运行,不显示cmd窗口(完全静化)
背景:由于我有某云的服务器(win server), 上面挂有好几个程序, 为了更好的监控他们, 我使用了一个最笨的方法, 就是下面的方法. 实现:我要监控的程序有三个, 成为ABC吧, 下面先把三个 ...
- vue 学习一些好的文档网址推荐
相关文章 1. vue.js 2.x 文档 http://cn.vuejs.org https://vue.docschina.org/ 2. npm https://www.npmjs.com ...
- topcoder srm 693 div1 -3
1.给出一个$n$个顶点的无向带权图.其中顶点$i,i+1$之间存在边,$i,i+2$之间存在边.而且仅有这些边.现在删掉其中的一些边,剩下的边满足图仍然是2联通的情况下使得权值和最小? 思路:其实就 ...
- Spring Cloud 入门指南
Spring Cloud 方志朋-史上最简单的 Spring Cloud 教程
- UVA 818 Cutting Chains(状压 + 暴搜)题解
题意:有1~n个小环,他们中的有些互相扣在一起,问你至少切开几个能把这写小环串成一条链 思路:还是太菜了,题目给的n<=15,显然可以暴力解决. 用二进制表示每个环切还是不切,然后搜索所有情况. ...
- 图片处理工具类 util
PathUtil package util; public class PathUtil { private static String seperator = System.getProperty( ...
- oracle 之 统计函数、子查询、操作符
统计函数 COUNT():查询表中的数据记录 AVG():求出平均值 SUM():求和 MAX():求出最大值 MIN():Q求出最小值 子查询 [单行多列] select * from a wh ...
- P2163 [SHOI2007]园丁的烦恼(cdq分治)
思路 其实是cdq的板子 题目要求询问对于每个给出的xi,yi,xj,yj形如xi<=x<=xj.yi<=y<=yj的x,y对数有多少组 改成四个询问,拆成四个前缀和的形式后就 ...
- P2475 [SCOI2008]斜堆(递归模拟)
思路 可并堆真是一种神奇的东西 不得不说这道题是道好题,虽然并不需要可并堆,但是能加深对可并堆的理解 首先考虑斜堆的性质,斜堆和左偏树相似,有如下的性质 一个节点如果有右子树,就一定有左子树 最后插入 ...