所以我有一个php文件,它运行一组sql查询以获取id列表。此文件可能需要一些时间才能运行。
当它正在运行时,我希望有一个进度条。
我拥有它以便运行文件更新会话变量,指示每组查询后的完成百分比。然后在我的前端,我正在对另一个读取会话变量值并返回它的文件执行ajax调用。然后,我用返回的百分比更新进度条填充的宽度。
问题: 在完成所有查询之前,不会更新进度条。所以我看到我的进度条在0%几秒钟然后它突然跳到100%。在脚本完成之前,似乎会锁定会话。我尝试使用session_write_close()但无法使其工作。
感谢。
答案 0 :(得分:1)
我遇到了类似的问题,会话解决方案无效。我的解决方案是将当前状态写入临时.txt文件,然后使用ajax调用读取该文件。
答案 1 :(得分:1)
这样做的问题是会话变量不会在运行时存储。在将变量存储在会话中之前,它们将一直等到脚本完成。一种解决方案是将进度临时存储在数据库或文件中,并使用AJAX定期访问数据。
另一种解决方案是使用服务器端javascript,如Googles V8 Engine (Node.js),并根据您的进度触发事件。然后,您的页面将根据被触发的javascript事件进行更新。