PHP中会话引起的脚本阻塞问题解决方案
对会话阻塞问题的解决方案是通过调用session_write_close避免这个问题()的会话操作完成后;案例1:
在会话过程中,在会话打开之后,相同的浏览器、相同的程序、不同的页面将被锁定。
问:这是session_start引起梗阻
所以,我写了几页测试它,发现会话造成阻塞,而另外两个案例没有造成阻塞。
查看PHP的bug列表,发现这个问题被提出来了:
复制代码代码如下:描述:
—
()调用session_start似乎等到其他脚本已经退出
使用相同的会话。我猜是第一个请求
独占使用的会话文件,第二个请求阻塞直到
能打开它吗。
PHP的官方回复是:
复制代码如下:感谢您抽出时间给我们写信,但是,美国,和正确的方式。
在PHP的会话机制结合,阻断的原因。因为PHP的会话信息写入文件,1的客户占1的会话文件。因此,当session_start时,文件被锁定,并锁定在读写模式(因为程序可能会修改会话值),所以第二次时,session_start叫,它堵塞了。
最简单的解:
经过检查PHP手册,我们发现了一个session_write_close功能,这是写会话数据和结束会话,也就是说,写会话数据,并关闭该会话。因此,我们可以打开会话通过调用这个函数的函数使用后关闭会话文件。一般来说,会话用于记录用户的身份信息,因此,PHP可以验证。因此,会话可以读取和写入页面执行的开始,和session_write_close函数可以执行后立即打电话。
案例二:
Opencart说改回用淘宝产品Opencart的把握,但Nongwan发现一个问题,是当脚本在抢,因为这个过程是相对缓慢的,这个时候所有的其他脚本的执行受阻,另一端抢剧本直到执行顺序后半天。学习,那是没有结果的。当被问到,可能是会议上关于知识的问题。它需要调用session_write_close()来解决它。那么session_write_close()怎么办呢
复制代码代码如下所示:
结束当前会话并保存会话数据。
会话数据通常不叫session_write_close脚本的执行后保存(),但为了保护会议,只能随时用脚本执行,和会话数据将被锁定。当你使用框架网页和会话的同时,你会发现在框架该网页将被加载一个一个因为这个锁。你可以通过关闭会话后立即修改并保存所有会话数据的加载速度。
这就是为什么我抢脚本将阻止其他页面的一个很好的解释。所以如果你有一个Ajax请求,需要很长一段时间,使用会话执行,你需要打电话给session_write_close()在服务器端,否则你的其他页面将被挂起直到请求完成!!!