【发布时间】:2012-07-17 14:40:33
【问题描述】:
我们使用多台服务器来处理传入的 Web 请求,这些请求以循环方式进行负载平衡。我遇到了一个不知道如何解决的问题。
使用 AJAX (qqFileUploader),我正在上传一个文件。默认情况下,它会进入 /tmp 文件夹,这很好。问题是当我尝试检索该文件时,该检索请求将由 没有 具有我上传的文件的下一个服务器处理。如果我一遍又一遍地重复请求,它最终会到达存储文件的原始服务器(通过循环负载平衡),然后我可以打开它。显然这不是一个好的解决方案。
这里基本上是代码:http://jsfiddle.net/Ap27Z/。为了简洁起见,我删除了一些。您将看到上传器对象调用 PHP 文件进行文件上传,然后在文件上传完成后,对脚本进行另一个 AJAX 调用以处理 .csv 文件。这就是流程在循环中迷失的地方。
我在这里阅读了一些关于将文件上传到内存的问题,似乎目前基本上不可行。我可以使用其他选项来上传文件并在同一个请求中处理所有内容吗?
【问题讨论】:
-
为什么网页要告诉服务器去处理呢?你能把文件变成你数据库中的 BLOB 吗?
-
您需要能够使用绝对名称引用每个服务器(即每个服务器都有自己的 A 记录),并且您需要在响应 POST 请求时返回单个服务器的名称文件上传到客户端的位置 - 例如使用 cookie - 因此客户端在尝试检索文件时可以使用其绝对名称引用正确的服务器。
-
出于兴趣,这是 DNS 循环还是反向代理?
-
@DaveRandom 我不确定是什么类型,系统管理员会处理它。我喜欢您关于传递服务器名称的建议。我会调查的。
-
@DaveRandom,如果是反向代理,是否可以使用会话来解决这个问题?
标签: php javascript file-upload load-balancing round-robin