同时调用同一文件时php阻塞
我有一些很奇怪的问题 我用PHP编写了一个能够下载文件的文件管理器,它工作得很好。 整个脚本构建为一个大文件 现在,当下载一个大文件时,我不能同时使用脚本来浏览文件夹内容。它除了继续加载外什么也不做。下载完成后,一切又恢复正常 是否存在阻止PHP同时解析同一文件的情况?因为不管我下载与否,其他脚本的工作都很有魅力 非常感谢您的帮助或文档链接:)您是否使用会话 如果是,那可能就是问题所在。默认会话处理程序使用在执行启用会话的代码时必须锁定的文件。实际上,这意味着每个用户都按顺序执行PHP文件。要解决此问题,必须使用使用DB的自定义会话处理程序。阅读 编辑:我想指出,编写没有锁定的自定义会话处理程序可能很困难,并且会引入各种微妙的错误。如果需要,请阅读更多关于此的文档同时调用同一文件时php阻塞,php,locking,Php,Locking,我有一些很奇怪的问题 我用PHP编写了一个能够下载文件的文件管理器,它工作得很好。 整个脚本构建为一个大文件 现在,当下载一个大文件时,我不能同时使用脚本来浏览文件夹内容。它除了继续加载外什么也不做。下载完成后,一切又恢复正常 是否存在阻止PHP同时解析同一文件的情况?因为不管我下载与否,其他脚本的工作都很有魅力 非常感谢您的帮助或文档链接:)您是否使用会话 如果是,那可能就是问题所在。默认会话处理程序使用在执行启用会话的代码时必须锁定的文件。实际上,这意味着每个用户都按顺序执行PHP文件。要解
编辑2:有时在不再需要时使用session_write_close()关闭会话就足够了(请参见注释) Daremon是正确的,但不需要使用其他会话处理程序。如果您在开始发送文件之前打电话,会话文件上的锁将被释放,您的其他脚本应该能够继续。您是如何强制下载的?哇,我从来都不知道。。但这似乎是个问题,这听起来很合理。但是在发送内容之前,会话是关闭的,不是吗?我不能/不想为此使用DB——它是php-only.call session_write_close(),一旦使用完会话(即发送文件之前)。这将释放锁你如何推送文件?我怀疑你做了类似于:session_start();readfile($file\u路径);这可能是个问题汤姆·黑格:我实际上也想到了。我现在正在尝试。为什么这是个问题?事实上,在这种情况下,在推送文件之前关闭会话更好。