【问题标题】:http request partial responsehttp请求部分响应
【发布时间】:2012-05-31 06:28:40
【问题描述】:

我不是 http 请求方面的专家,所以这个问题对某些人来说可能是微不足道的。我正在向 php 脚本发送请求,这需要花费大量时间来处理文件并返回响应。有没有办法在此脚本完成其任务之前发送响应以让用户了解进程状态?由于此任务可能需要几分钟时间,因此我想在流程的关键部分完成时通知用户。

注意:我不能将此请求拆分为其他几个

如果是这样,我可能没有正确的方法,您有其他想法如何处理吗?

【问题讨论】:

    标签: php html xmlhttprequest


    【解决方案1】:

    技术上是的,但它需要您对 http 堆栈进行细粒度控制,在典型的 php 设置中您可能拥有也可能没有。我建议您研究其他解决方案(例如,请求启动任务 - 然后轮询以获取有关进度的更新)

    【讨论】:

      【解决方案2】:

      http://www.redips.net/javascript/ajax-progress-bar/

      这是一篇很棒的文章,介绍了如何创建 ajax 和 php 一起使用的进度条。

      如果不合理请告诉我!

      【讨论】:

      • 我不是在寻找进度条。
      • 当时我唯一能想到的就是让 php 脚本将会话 id 和进度值(无论您想如何计算)存储在一个使用 ajax 异步检查的数据库中.这些可能是关联状态而不是数字。例如,状态='正在执行第一个任务'...状态='第一个任务完成,开始第二个任务'...等等,但这个想法仍然是让第二个 ajax 调用来检查脚本在其进程中更新的内容
      【解决方案3】:

      我认为长时间处理请求的最佳方式是 cron 作业。您可以发送请求,该请求将创建“任务”并通过 cron 作业捕获任务。 Cron 作业可以在工作时更改任务状态,您可以通过间隔请求检查任务状态。我无法想象另一种方式来通知用户有关请求处理的信息。只要您响应,您的标头就会被发送并且 PHP 停止。

      编辑:应注意 Cron 作业仅在 Linux 服务器上可用。 windows 服务器需要访问任务调度程序,而大多数 web 主机不允许这样做。

      【讨论】:

        猜你喜欢
        • 2011-06-03
        • 2021-08-28
        • 2020-11-17
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多