首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LiteSpeed / PHP并行请求

LiteSpeed / PHP并行请求
EN

Stack Overflow用户
提问于 2022-06-10 01:40:00
回答 1查看 61关注 0票数 0

在我们的PHP网站上,我们注意到,如果我在两个单独的选项卡中请求页面,那么第二个选项卡将永远不会开始加载,直到第一个选项卡完成对PHP端的处理(使用LiteSpeed webserver)。这是一个云网络托管,应该能够处理大量的访问者。我们在以前与Apache一起托管时观察到了相同的行为。

该问题是否存在于the服务器配置中?或者在我们的应用程序中,它会阻止处理吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-10 05:56:14

如果应用程序使用PHP会话(有意或无意),这通常就是行为。

当应用程序调用session_start()时,它会以用户身份为您生成一个会话,并在此会话上执行一个文件锁,直到站点执行完毕为止,然后该锁将被移除,然后等待同一会话的下一个脚本可以继续进行。

如果您不打算将任何数据写入会话,那么尽早调用session_write_close()是有益的,因为这将释放锁,并允许处理其他进程(其他选项卡)。

发生锁定是因为您显然不希望两个进程试图同时写入同一个文件,可能会覆盖写入会话的进程数据之一。

显然,这也可能是应用程序中导致这种情况的原因,但是您必须实际调试代码才能找到答案。您也可以在命令行上使用strace来收集更多信息。

PHP会话锁定在https://ma.ttias.be/php-session-locking-prevent-sessions-blocking-in-requests/中得到了深入的解释--它只是深入到中,比我上面所做的要详细得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72568264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档