PHP 加载一次页面时, 浏览器请求多次, 导致出错
来源:互联网 发布:android网络框架 编辑:程序博客网 时间:2024/06/05 16:35
问题描述: 在一个项目中, 有一段统计页面浏览次数的代码, 其实现的方式是, 每次页面加载, 就 UPDATE SET 一次, 给数据表中对应的值加一. 碰到的一个问题是, 刷新页面时, 页面的浏览次数诡异的加了2, 而不是正常的加 1. 然后,在控制器中加了如下的调试代码, 以测试当前控制器是否被请求了两次:
function article_detail() { ... $ret_val = $this->session->userdata('ret'); if($ret_val) { $this->session->set_userdata('ret', $ret_val+1); } else { $this->session->set_userdata('ret', 1); } $data['session'] = json_encode($this->session->all_userdata()); // 然后, 把数据分配到视图中 ... } // 视图中用JS记录数据 console.log(<?=$session?>);
经过测试发现,页面确实被请求了两次. 然后, 注释控制器文件中与测试无关的代码, 缩小检查范围.之后,发现一个现象, 视图的CSS文件和JS文件因为后台没有分配路径需要的前缀(被注释了), 导致找不到文件. console 中记录的ret变量的值增加了很多. 说明: 因为文件找不到, 导致了浏览器向服务器进行了多次的请求!! 最终, 也将问题定位到了:
<link rel="shortcut icon" href="<?=$config['favicon']?>" type="image/x-icon">
原因是: 因为后台没有上传该图片, 所以, <?=$config['favicon']?> 的值为空, 导致浏览器请求了两次!! 所以, 记录页面浏览次数的值也更新了两次!!
此外: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 还发现一个问题, 这个只是在 GoogleChrome 下才有这个问题! 而且, 只要在控制器中往页面输出一点东西, 但不能是空白的, Chrome 也正常了 -_- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 用 FireFox 测试时, 没有问题! 另外, 在命令行用 curl 请求页面测试时, 一切正常. 不过, 命令行界面也不需要去接受图片 之类的信息~~
之前也碰到过一次类似的事情, 就是我的 session 不一致, 服务器传到视图页面中显示时, 始终和服务器端生成的 token 值不一致! 就是因为请求了两次. 当时也是在控制器中输出了一个非空的, 但是在页面中设置为 display:none 才解决的. 当时没时间处理这个问题.....
0 0
- PHP 加载一次页面时, 浏览器请求多次, 导致出错
- 一个PHP程序,同一时刻被请求多次,怎么让它只运行一次?
- 点击按钮一次,多次请求的问题
- iOS 多次请求只执行一次
- Extjs 点击一次button触发多次请求
- IE8浏览器缓存问题导致Ajax的GET请求只能执行一次的解决办法
- 鼠标滚动到页面底部自动加载数据--阻止多次请求
- 防止用户多次点击按钮导致页面被多次提交
- PHP一次请求生命周期
- jquery滚动页面底部时ajax加载多次解决办法
- jquery滚动页面底部时函数加载多次解决办法
- postmain 导致浏览器两次请求
- UItableViewCell 重用导致控件多次加载 去除cell重用导致 视图控件多次加载问题
- UItableViewCell 重用导致控件多次加载 去除cell重用导致 视图控件多次加载问题(转)
- 通过jquery load在list页面多次加载详情页,导致的多form校验以及提交问题
- 记一次多次智商下线导致的奇耻大辱
- 如何处理页面多次加载的问题
- 浏览器页面加载性能
- meta中的viewport指令
- 一周总结
- java:xxx cannot be resolved to a type
- 总结iOS App开发中控制屏幕旋转的几种方式
- 第一次写博客
- PHP 加载一次页面时, 浏览器请求多次, 导致出错
- Shell中while循环的done 后接一个重定向<
- 一个小脚本----各种编译命令合入到同一个脚本
- wampserver安装完之后图标一直显示红色解决方法
- 输出数字2016-10-31 15:39:58.188是Timestamp类型 ,sql拼装
- unity3D游戏开发十七之NGUI四
- 异步加载和延迟加载
- 命令行生成vue的框架
- PMP笔记:Line Manager与Functional Manager