PHP页面进程分离



如果某个php页面正在运行一些长进程,如sleep或while循环,使其需要一段时间才能加载,这会影响同一页面的其他进程吗
我注意到,当我试图用不同的短流程打开同一个页面时,加载也需要很长时间,而且要清楚的是,它不会在第一个(长流程)加载之前加载,

这是真的还是我的代码出了问题?如何防止它
我认为这与缓存有关,但我不想在得到提示或答案之前搞砸

PHP在一个进程中运行,每次访问页面时,它都会启动进程、进程和结束。每个过程不会影响其他过程。

我注意到,当我试图用不同的短句打开同一页时进程,[…]在第一个进程(长进程)进行之前不会加载

最常见的原因:

  • 您的脚本"按原样"使用PHP会话,该会话使用文件锁定。文件锁定机制确保一次只有一个脚本可以编辑每个用户的会话数据,但这确实意味着,如果来自同一用户的两个请求同时发生,如果它们都依赖会话,则第二个脚本在第一个请求完成之前不会启动(不过,两个不同的用户有不同的会话文件,因此它们不会碰撞)
  • 浏览器会自动检测到页面占用了很长时间,并故意在后台延迟后续请求——我相信这是谷歌Chrome默认会做的事情

然而,这两种情况都相对安全,因为只有在同一用户试图同时加载多个页面的情况下才会出现延迟,这是不常见的——无论实际页面加载需要多长时间,不同的用户都不会看到延迟。

这个优秀的SO回答中有更多关于这个主题的内容。

最新更新