session_start()卡死、session锁定导致并发阻塞 解决办法
2019-04-28 01:30:05
今天测试网站的时候,发现网站好卡的,通过php-fpm慢日志查看发现: 通过上图就知道我使用的ajax进行异步获取数据时,一个页面中存在2个ajax异步执行! 根据观察ajax.php: 第一个ajax请求发起成功,这个请求得php运算100秒后才返回结果。 第二个ajax在第一个请求发起后也跟随发起请求,第二个请求php运算10秒就可以发回结果,但是结果却是得第一个请求完全执行完成返回结果后第二个才跟随返回。 原因: 原因在于:执行session_start()后,对应的session文件是被锁定的,直到当前脚本结束才会解锁。 session数据被锁定以防止并发写入,所以任何时候只有一个脚本可以在session上运行。 在锁定期间,另一个进程访问相同session id 要等文件解...
php中session锁--如何防止阻塞请求(译)
2019-04-28 01:28:55
现代浏览器限制到一个host并发连接的数量一般为4或6。这意味着,如果您的web页面加载几十个来自同一个host的assert file(js、图像、css)时,由于并发数的限制,会产生排队。同样甚至更糟的是,这个问题也会发生在使用了session的php脚本中。 问题: php的session缺省用文件存储,当请求一个需要操作session的php文件(session_start())时,这个文件是会被第一个操作session的进程锁定,导致其他请求阻塞。其他请求会挂起在session_start()直到session文件解锁。 解决: 由于锁定的session文件直到脚本执行结束或者session正常关闭才会解锁,为了防止大量的php请求(需要使用$_SESSION数据)被锁定,可以在写完session后马上关闭,这样就释放了锁。 关闭session: ...
移动端滚动穿透问题完美解决方案
2018-12-07 18:12:18
移动端滚动穿透问题完美解决方案ion: fixed 问题 众所周知,移动端当有 fixed 遮罩背景和弹出层时,在屏幕上滑动能够滑动背景下面的内容,这就是臭名昭著的滚动穿透问题 之前搜索了一圈,找到下面两种方案 css 之 overflow: hidden SCSS .modal-open { &, body { overflow: hidden; height: 100%; } } 页面弹出层上将 .modal-open 添加到 html 上,禁用 html 和 body 的滚动条 但...
Your browser sent a request that this server could not understand. Additionally, a 400 Bad Request e
2018-10-08 15:04:15
Bad Request Your browser sent a request that this server could not understand. Additionally, a 400 Bad Request error was encountered while trying to use an ErrorDocument to handle the request. 在本地配置虚拟域名绑定。配置完HOST ,配置完WAMP的VHOST ,输入虚拟域名,一直提示这个错误。网上搜了半天,终于找到答案。原来是因为虚拟域名中有下划线,配置载入无法支持这个。 比较奇怪的事,我在WIN7电脑上配置有下划线是可以的,为什么WIN10上不行呢? 原回答见:https://stackoverflow.com/questio...
如何更新npm至最新版本
2018-06-23 16:17:12
命令行运行: npm install -g npm 1 npm就自动为我们更新到最新版本 ...
常用的Git命令清单(转)
2018-06-13 14:14:25
一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。 下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一、新建代码库 # 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git clone [url] 二、配置 Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。 # 显示当前的Git配置 $ git con...
解决因为本地代码和远程代码冲突,导致git pull无法拉取远程代码的问题
2018-06-12 09:53:20
一、问题 当本地代码和远程代码有冲突的时候,执行git pull操作的时候,会提示有冲突,然后直接终止本次pull,查了些资料没有找到强制pull的方式,但是可以使用如下方式解决。 二、解决思路 可以先将本地内容stash到仓库中,执行stash操作后,本地代码将返回到修改前的内容。这时,就可以正常将远程代码下载到本地了。然后再通过stash操作将仓库中的内容合到本地,如果有冲突就可以进行解决了。 git stash命令主要用于以下情形: 发现有一个类是多余的,想删掉它又担心以后需要查看它的代码,想保存它但又不想增加一个脏的提交。这时就可以考虑git stash。 使用git的时候,我们往往使用分支(branch)解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个...
SQLMAP详解+实战操作命令
2018-04-18 10:34:47
SQLMAP是一款基于python开发的SQL注入工具,几乎支持现在所有的数据库,功能非常强大。由于是国外的产品,所以对于我这种英语水平不高的菜鸟来说,使用起来会有点困难。虽然现在已经能熟练使用大部分功能了,但还是把中文解释贴过来,方便以后使用。 Options(选项): –version 显示程序的版本号并退出 -h, –help 显示此帮助消息并退出 -v VERBOSE 详细级别:0-6(默认为1) Target(目标): 以下至少需要设置其中一个选项,设置目标URL。 -d DIRECT 直接连接到数据库。 -u URL, –url=URL 目标URL。 -l LIST 从Burp或WebScarab代理的日志中解析目标。 -r REQUESTFILE 从一个文件中载入HTTP请求。 ...
sqlmap查找SQL注入漏洞入门
2018-04-18 10:23:23
1、安装sqlmap sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞。注意:sqlmap只是用来检测和利用sql注入点的,使用前请先使用扫描工具扫出sql注入点。 它由python语言开发而成,因此运行需要安装python环境。它依赖于python 2.x ,请不要安装python 3.x 1.1 安装pyhon 在Windows上安装Python 首先,从Python的官方网站www.python.org下载最新的2.x版本,地址是这个: https://www.python.org/downloads/ 然后,运行下载的MSI安装包,在选择安装组件的一步时,勾上所有的组件: 特别要注意选上pip和Add python.exe to Path,然后一路点“Next”即可完成安装...
Windows下SQLMAP的安装图解
2018-04-17 17:35:23
由于SQLMap是利用Python语言写的,所以需要将Python这个语言环境给安装上,以下是详细安装过程: 准备工作: (1) Windows7/8/10操作系统; (2) Python2.7.11; (3) SQLMap Step1. Python2.7.11下载: 下载地址:https://www.python.org/downloads/ Step2. Python2.7.11安装: 2.1. 直接双击下载好的Python2.7.11安装包,默认,Next; 2....