0

所以我有一个 php 文件,它运行一组 sql 查询以获取 id 列表。此文件可能需要一些时间才能运行。

在运行时,我想要一个进度条。

我有它,以便运行文件更新一个会话变量,指示每组查询后的完成百分比。然后在我的前端,我正在对另一个文件进行 ajax 调用,该文件读取会话变量值并返回它。然后我用返回的百分比更新进度条填充的宽度。

问题:在所有查询完全完成之前,进度条不会更新。所以我看到我的进度条在 0% 几秒钟后突然跳到 100%。似乎会话被锁定,直到脚本完成。我尝试使用 session_write_close() 但无法使其正常工作。

谢谢。

4

2 回答 2

1

我有一个类似的问题,会话解决方案不起作用。我的解决方案是将当前状态写入临时 .txt 文件,然后使用 ajax 调用读取该文件。

于 2013-08-20T15:08:42.413 回答
1

这样做的问题是会话变量不是在运行时存储的。他们将等到脚本完成后再将变量存储在会话中。一种解决方案是将进度临时存储在数据库或文件中,并使用 AJAX 定期访问数据。

另一种解决方案是使用像Googles V8 Engine (Node.js)这样的服务器端 javascript ,并根据您的进度触发事件。然后,您的页面将根据被触发的 javascript 事件进行更新。

于 2013-08-20T15:44:10.873 回答