![]() |
1
5
代码的服务器端部分应该产生或与Web服务器外部的进程通信。使用网页代码来运行应该由守护进程处理的任务只是草率的工作。 |
![]() |
2
2
你不能指望他们在这里呆20分钟。即使是世界上最合作的用户也一定会离开,做些别的事情,忘记,然后关闭窗口。允许如此长的连接时间会使任何合理的HTTP超时的机会变得更糟,也会使您对琐碎的DOS敞开心扉。 正如Spencer建议的那样,使用第一个请求来启动一个独立于HTTP请求的进程,在Ajax响应中返回一个ID,在会话中或在数据库中存储该ID,或者您想要的任何内容。然后,用户可以做他们想做的任何事情,并且不会中断任务。ID可用于轮询状态。如果将其保存到数据库,用户可以注销、清除其cookie,当他们重新登录时,您仍可以检索任务的状态。 |
![]() |
3
0
会话是不可实现的,我可能会设计一些任务列表。所以我可以为每个用户保留任务记录。通过这种设计,我将能够显示“完成”的任务,以保持用户的意识。 另外,我将把长时间的操作移出工作进程。这是必需的,因为Web服务器可以被重新限制。 而且,是的,我将每隔几十秒从使用Ajax调用的服务器请求一次状态。 |
![]() |
4
0
您可以使用JS计时器定期对服务器执行ping操作,以查看是否完成了任何作业。如果用户离开并返回,则重新启动计时器。当作业完成后,您会向用户指出这一点,以便他们可以单击链接并打开报告(我不建议强制加载某些内容,尽管可以这样做)。 |
![]() |
5
0
根据我的经验,最好的方法是在服务器端保存每个用户正在运行的报表及其状态。然后客户端将定期轮询此状态。 基本上,不是让客户机询问checkstatusof(int session),而是让客户机询问getrunningjobsfor(int userid)的服务器返回所有正在运行的作业和状态。 |
![]() |
Karlo · PHP Sqlite PDO最新版本 5 月前 |
![]() |
Malte · 检查远程服务器上是否存在文件(使用PHP)[关闭] 5 月前 |
![]() |
Bard.Mus · 迁移后的数据库字符集环境 5 月前 |