0

我正在开发一个应该显示客户报告的系统。这些报告需要在显示实际报告之前进行先前的计算。

由于计算过程有时繁琐且冗长,有时报表使用的数据会被刷新,因此用户必须能够重新计算这些报表。由于这些原因,生成报告的脚本与实际显示报告的脚本是分开的。

简而言之,我有两个脚本,假设它们被称为“generateReport.php”和“showReport.php”。

当用户单击客户端查看其报告时,“showReport.php”会检查它需要的数据是否已经生成,如果已经生成,它将显示该报告。如果数据不存在,它将浏览器转发到“generateReport.php”,完成后,它将浏览器转发到“showReport.php”

当用户单击两个客户端并且它们都需要生成数据时,就会出现问题。

第一个点击的客户端会进入“generateReport.php”,用户会看到一个让他/她了解整个过程的栏。虽然应该生成第二个客户端的页面只是停留在那里,等待。

如果第一个客户端花费的时间太长,那么第二个客户端显然会超时并停留在那里。

我知道,由于我在同一个浏览器的两个选项卡上点击了相同的 php('generateReport.php'),apache 不会同时处理这两个请求,所以有没有办法避免第二个(可能还有第三个、第四个等)。 ) 窗口不超时?

注意:'generateReport.php' 和 'showReport.php' 有 set_time_limit(0); 只是为了测试,它显然什么都不做。

注意2:我可以在我的托管环境中访问 php.ini

注意3:对于冗长/唯一无聊的文字帖子感到抱歉

提前谢谢!

编辑1:

谢谢你的回复。

  • 请求由用户单击锚标记由 HTTP GET 生成。
  • header("Location: ...") 用于将用户从 generateReport 带到 showReport。
  • 我指的是浏览器选项卡,是的。
4

2 回答 2

0

谢谢大家!

我们决定在空闲时间运行那些长时间的任务,并在请求时生成数据。

无论如何,Web 响应时间都不应该花那么长的时间,而且 Web 服务器不应该处理那些漫长的过程。

再次感谢大家的支持!

于 2012-11-30T21:36:57.427 回答
0

Apache 将多次运行您的脚本;为什么会在乎?

如果生成报告的时间超过 2 分钟,浏览器本身通常会超时并停止等待。

这里的典型技巧是让“生成”进程在单独的线程中运行,这样它就可以在自己的时间内完成。

我不知道为什么第二个用户被阻止,但我认为你的脚本中有一些东西被阻止。

于 2012-11-30T05:10:11.950 回答