向服务器发送多个请求

时间:2016-06-28 07:52:37

标签: php mysql amazon-web-services laravel-5.1

我的代码托管在亚马逊网络服务服务器上,我使用的是 Hathway Internet服务提供商(基于印度的ISP)。 以前我的代码与Hathway ISP完美配合,但几天前我的代码没有按预期工作。我试图从Hathway ISP的另一个用户执行相同的代码,我也面临同样的问题。我认为我的代码有问题,经过调试我发现一切都很完美,我知道当我用其他ISP执行我的代码时。 Hathway ISP正在发生的事情是,它向服务器发送多个请求。 浏览器只向浏览器发送一个请求,我在浏览器的“网络”选项卡中检查了该请求,但不知道服务器获取多个请求的中间发生了什么。 让我概述一下我的代码,

  1. 用PHP写的
  2. 正在下载Excel文件
  3. 代码计算量很大,因此下载excel文件需要10到15分钟
  4. 由于

2 个答案:

答案 0 :(得分:1)

根据您的要求,我认为过长的计算可能存在问题,并且ISP正在重新发送测试请求,以确定它是否存在,或类似的内容。

理想情况下,在这样的过程中,您可以执行以下操作:

  1. 用户点击进程按钮:
    1.1 Ajax请求被发送到php来计算excel文件。

  2. 收到Ajax请求  2.1生成轮询ID  2.2 exec(' php calculateExcel.php $ pollingid'); (见this answer
     2.3向用户发送轮询ID

  3. 接收投票ID   3.1每5秒请求编译状态

  4. 收到编译状态请求
       4.1轮询数据库/文件/通过轮询idto查看编译的距离    4.2.1。如果没有完成,返回百分比完成
       4.3.2。如果完成,请返回下载链接

  5. 收到状态回答
       5.1。如果没有完成,请更新状态栏
       5.2。如果完成,请删除状态栏,显示下载链接。

  6. 我将如何做到这一点。这样你的服务器可以快乐地计算大量的excel文件,用户不必担心浏览器超时(一些浏览器选择在5分钟后断开连接),Windows网络重置/ DNS重新协商,wifi断开连接等。

    只要用户拥有他/她的投票ID,他/她就可以请求状态和/或下载文件,只要它可用。

答案 1 :(得分:0)

我建议在单个请求中以json的形式发送数据。在PHP中,您可以再次将其碎片整理为所有值。例如。

xhttp.open("GET", "gotoChatRoomorNot.php?q=[{"+str+"},{"+user1+"},{"+user2"}]", true);

在php中,您可以按照此操作获取数据:How do I extract data from JSON with PHP?

我认为你可以用xml执行相同的行为,但我不知道xml