mar*_*cpt 10 php session background-process
我在PHP中制作了一个长脚本:
ignore_user_abort(true);
set_time_limit(0);
Run Code Online (Sandbox Code Playgroud)
即使我关闭页面,它也能在后台完美运行.我的问题是,在此脚本在后台运行之前,我无法打开其他PHP文件.我怎么解决这个问题?
Sal*_*n A 23
当PHP脚本使用会话时,PHP会锁定会话文件,直到脚本完成.尝试使用锁定会话的页面请求将被阻止,直到会话文件被释放.PHP执行此操作以使会话保持一致状态.引用PHP bug#31464:
[2005-01-10 08:13 UTC] der dot at php dot net
这确实不是一个错误,会话扩展需要锁定会话文件,以便并发更新不会破坏文件.这意味着需要序列化使用相同会话文件的所有脚本.为了提高性能,您可以在读取/设置会话变量后立即使用 http://php.net/session_write_close,这将删除文件的锁定.
上面和这里描述的最简单的解决方法是:
session_start()
session_write_close()
正如评论中提到的,会话是问题 - 这是因为会话文件被锁定.
使用session_write_close()
你的长期运行的脚本来解锁会话文件,但请注意,您不能使用$_SESSION
在特定的脚本变量之后.
归档时间: |
|
查看次数: |
3245 次 |
最近记录: |