向服务器发送多个请求

Sending multiple request to server

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

  1. 写在php
  2. Excel 正在下载文件
  3. 代码计算量很大,因此下载 excel 个文件需要 10 到 15 分钟

谢谢

根据您的要求,我认为可能存在计算时间过长的问题,ISP 正在重新发送请求以测试它是否存在,或者类似的东西。

理想情况下,在这样的过程中你会做这样的事情:

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

  2. Ajax 收到请求。
    2.1 生成轮询id.
    2.2 执行('php calculateExcel.php $pollingid'); (参见 this answer
    2.3 发送轮询id给用户

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

  4. 收到编译状态请求
    4.1 轮询database/file/whatever通过轮询id查看编译进度
    4.2.1.如果未完成,return 完成百分比
    4.3.2.如果完成,return 下载 link

  5. 收到状态回复
    5.1.如果不完整,更新状态栏
    5.2.如果完成,删除状态栏,显示下载 link。

我就是这样做的。这样你的服务器就可以愉快地处理庞大的 excel 文件,用户不必担心浏览器超时(一些浏览器选择在 5 分钟后断开连接),windows 网络 resets/dns重新协商、wifi 断开等...

只要用户有his/her轮询id,he/she就可以请求状态and/or只要文件可用就下载。

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

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

在 php 中,您可以按照以下步骤取回您的数据:

我认为您可以使用 xml 执行相同类型的行为,但我不知道 xml