代码之家  ›  专栏  ›  技术社区  ›  knittl

同时调用同一个文件时PHP阻塞

  •  2
  • knittl  · 技术社区  · 16 年前

    我有个很奇怪的问题。

    我用PHP编写了一个文件管理器,能够下载文件——这很好。 整个脚本构建为一个大文件。

    现在,在下载大文件时,我不能同时使用脚本浏览文件夹内容。它只会继续加载。一旦下载完成,一切都会恢复正常。

    有没有什么东西阻止PHP同时解析同一个文件?因为其他的脚本就像一个魅力,不管我是否下载。

    非常感谢您提供的帮助或文档链接:)

    2 回复  |  直到 16 年前
        1
  •  4
  •   daremon    16 年前

    你使用会话吗?

    如果是,那可能就是问题所在。默认会话处理程序使用在执行启用会话的代码时必须锁定的文件。实际上,这意味着每个用户都按顺序执行PHP文件。要解决此问题,必须使用使用DB的自定义会话处理程序。读 this .

    编辑:我想指出,编写一个没有锁定的自定义会话处理程序可能很困难,并且会引入各种细微的错误。如果你需要阅读更多的文档!

    编辑2:有时使用session_write_close()在不再需要时关闭会话(参见注释)。

        2
  •  1
  •   Tom Haigh    16 年前

    daremon是正确的,但不需要使用其他会话处理程序。如果你打电话 session_write_close() 在开始发送文件之前,会话文件上的锁将被释放,您的其他脚本应该能够继续。

    推荐文章