php - 将大文件上传到服务器(非阻塞)

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

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

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

我的问题是, 有什么方法可以以非阻塞方式处理文件上传吗?甚至可能一起绕过 SOAP 函数。

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

最佳答案

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

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

关于php - 将大文件上传到服务器(非阻塞),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12976869/

相关文章:

php - 允许匿名访问 web.config 中的特定 URL

php - MySQL LEFT JOIN 查询显示相同的值

php - woocommerce 自定义运输方式未出现在运输区域

java - 如何在没有 Servlet 的情况下在 Restful Web 服务(Java 和 Jersey)中获取客户端证书?

web-services - 有没有办法从 Nagios 中提取数据,就好像它是一个 Web 服务一样?

soap - 在 SoapUI 中使用 groovy 脚本记录测试步骤响应

.net - 从多个 XSD 创建 XML/SOAP 客户端?

PHP Mailer 仅在添加打印到 xml 文件的功能后才发送重复的电子邮件

java - RESTful 服务客户端可以作为 SOAP 服务的服务器吗?

wcf - 客户端不发送SOAPAction的WSDL第一台WCF服务器