第一个请求:http://url.tld/calc-sth-complicated
第二个请求:http://url.tld/simple-view
我有一个 Web 应用程序 - Windows/Apache/PHP/MySQL。如果我使用一个带有多个选项卡的浏览器(一个 session )来请求 Web 应用程序,则第二个请求似乎会等待第一个请求。
如果我使用两个浏览器(两个 session ),第二个请求不会等待第一个。我怎样才能解决这个问题?什么是阻塞?我怎样才能看到什么是阻塞的?为什么第二个请求正在等待?
谢谢
最佳答案
当任何使用 session 的脚本处于事件状态时,PHP 的默认 session 处理程序会锁定 session 文件。从同一浏览器向站点发出多个请求会强制除第一个并行请求之外的所有请求等待 session 文件解锁。
从两个完全的浏览器(这意味着两个不同的 session )执行此操作,可以让请求并行进行,因为两个 session 都不会锁定另一个 session 。
如果您的站点需要能够并行执行多个同一 session 请求,则应在每个脚本中尽快session_write_close()
。如果脚本不修改 session 的内容,您可以在初始 session_start()
调用后立即执行此操作。即使 session “关闭”,$_SESSION 数组仍然存在且可读。
关于php - 如果我使用一个浏览器/ session 多次请求我的 Web 应用程序 (WAMP),为什么它会很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5487030/