我在PHP做了一个很长的脚本这样:
ignore_user_abort(true);
set_time_limit(0);
它完美地在后台运行,即使我关闭页面。 我的问题是,直到该脚本完成在后台运行,我不能打开其他PHP文件。 我怎么解决这个问题?
我在PHP做了一个很长的脚本这样:
ignore_user_abort(true);
set_time_limit(0);
它完美地在后台运行,即使我关闭页面。 我的问题是,直到该脚本完成在后台运行,我不能打开其他PHP文件。 我怎么解决这个问题?
当PHP脚本使用会话,PHP锁定了会议文件,直到脚本完成。 任何试图使用一个会话锁定一个页面请求被阻塞,直到会话文件被释放。 PHP做这使会话保持一致的状态。 从PHP的bug#31464报价 :
[2005-01-10 8点13 UTC]德里克在PHP点网
这的确不是一个错误可言,会话扩展需要锁定会话文件,以便并发更新不能损坏文件。 这意味着需要序列化使用同一个会话文件中的所有脚本。 为了提高性能,您可以使用http://php.net/session_write_close你读完/设置会话变量,这将删除的文件锁定,尽快。
如上所述以及最简单的解决方法在这里也就是:
session_start()
session_write_close()
正如在评论中提到的,会话是问题 - 这是因为会话文件被锁定。
使用session_write_close()
在你的长期运行的脚本来解锁会话文件,但请注意,您不能使用$_SESSION
在那个特定的脚本变量之后。