繁体   English   中英

LiteSpeed / PHP 服务器并行请求

[英]LiteSpeed / PHP server parallel requests

在我们的 PHP 网站上,我们注意到,如果我在 2 个单独的选项卡中请求页面,第二个选项卡将永远不会开始加载,直到第一个选项卡完成对 PHP 端的处理(使用 LiteSpeed 网络服务器)。 这是一个可以处理大量访问者的云虚拟主机。 我们在以前使用 Apache 托管时观察到了相同的行为。

问题可能出在网络服务器配置中吗? 还是我们的应用程序中的某些东西阻塞了处理?

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

当应用程序调用session_start()时,它会为您作为用户生成一个会话,并将对该会话执行文件锁定,直到站点执行完成,然后锁定将被删除,下一个脚本等待相同然后可以继续会话。

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

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

显然,它也可能是您的应用程序中的其他原因造成的,但您必须实际调试代码才能弄清楚。 您也可以在命令行上使用strace来尝试收集更多信息。

https://ma.ttias.be/php-session-locking-prevent-sessions-blocking-in-requests/中深入解释了 PHP 会话锁定 - 它比我上面所做更详细。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM