向服务器发送多个请求
Sending multiple request to server
我的代码托管在 亚马逊网络服务 服务器上,我正在使用 Hathway Internet 服务提供商(印度的 ISP)。
以前我的代码与 Hathway ISP 完美配合,但几天前我的代码没有按预期工作。我试图从 Hathway ISP 的另一个用户那里执行相同的代码,我也遇到了同样的问题。我以为我的代码有问题,调试后我发现一切都很完美,这是我在与其他 ISP 执行我的代码时才知道的。 Hathway ISP 正在发生的事情是,它向服务器发送多个请求。
浏览器只向服务器发送一个请求,我在浏览器网络选项卡中检查了这一点,但不知道在服务器获得多个请求的过程中发生了什么。
让我概述一下我的代码,
- 写在php
- Excel 正在下载文件
- 代码计算量很大,因此下载 excel 个文件需要 10 到 15 分钟
谢谢
根据您的要求,我认为可能存在计算时间过长的问题,ISP 正在重新发送请求以测试它是否存在,或者类似的东西。
理想情况下,在这样的过程中你会做这样的事情:
用户点击处理按钮:
1.1 Ajax 请求被发送到 php 以计算 excel 文件。
Ajax 收到请求。
2.1 生成轮询id.
2.2 执行('php calculateExcel.php $pollingid'); (参见 this answer)
2.3 发送轮询id给用户
接收投票 ID
3.1 每5秒请求一次编译状态
收到编译状态请求
4.1 轮询database/file/whatever通过轮询id查看编译进度
4.2.1.如果未完成,return 完成百分比
4.3.2.如果完成,return 下载 link
收到状态回复
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
我的代码托管在 亚马逊网络服务 服务器上,我正在使用 Hathway Internet 服务提供商(印度的 ISP)。 以前我的代码与 Hathway ISP 完美配合,但几天前我的代码没有按预期工作。我试图从 Hathway ISP 的另一个用户那里执行相同的代码,我也遇到了同样的问题。我以为我的代码有问题,调试后我发现一切都很完美,这是我在与其他 ISP 执行我的代码时才知道的。 Hathway ISP 正在发生的事情是,它向服务器发送多个请求。 浏览器只向服务器发送一个请求,我在浏览器网络选项卡中检查了这一点,但不知道在服务器获得多个请求的过程中发生了什么。 让我概述一下我的代码,
- 写在php
- Excel 正在下载文件
- 代码计算量很大,因此下载 excel 个文件需要 10 到 15 分钟
谢谢
根据您的要求,我认为可能存在计算时间过长的问题,ISP 正在重新发送请求以测试它是否存在,或者类似的东西。
理想情况下,在这样的过程中你会做这样的事情:
用户点击处理按钮:
1.1 Ajax 请求被发送到 php 以计算 excel 文件。Ajax 收到请求。
2.1 生成轮询id.
2.2 执行('php calculateExcel.php $pollingid'); (参见 this answer)
2.3 发送轮询id给用户接收投票 ID
3.1 每5秒请求一次编译状态收到编译状态请求
4.1 轮询database/file/whatever通过轮询id查看编译进度
4.2.1.如果未完成,return 完成百分比
4.3.2.如果完成,return 下载 link收到状态回复
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