将大文件上载到服务器(非阻塞)

时间:2012-10-19 14:53:25

标签: php web-services soap upload 4d-database

所以我正在开发一个需要与4d应用程序通信的php应用程序。 4d应用程序使用SOAP Web服务进行外部通信。

SOAP Web服务具有将文件上载到4d应用程序的功能。 由于4d应用程序的Web服务的文件上传功能的破坏性,我们已经实现了一个进度条以将文件上载到Web服务器,然后在成功之后尝试将文件发送到4d应用程序服务器。 但是对于客户端来说这不太好,因为这个人需要等待初始文件上传到服务器,然后再次执行文件上传功能以将文件从Web服务器传输到4d应用程序的服务器。

我的问题是, 有没有办法以非阻塞的方式处理文件上传?甚至可能一起绕过SOAP功能。

更新: 我想也许可以使用像RabbitMQ这样的东西来排队每个文件上传项目,然后使用脚本或者与应用程序分离的东西进行处理,以便它不会阻止应用程序。

1 个答案:

答案 0 :(得分:2)

您建议的解决方案将是解决问题的正确方法;使用HTML5文件上传或swfupload接受通过常规Web应用程序上传,以允许上传进度条,然后将其存储在本地并排队工人稍后处理的Gearman或RabbitMQ任务。

worker将在本地获取文件并将其上传到远程服务(4d / SOAP),然后在完成后在数据库中设置正确的状态,以便用户知道文件何时被处理并添加到实际的服务器。