Php AJAX上传-在继续之前不等待响应

Php AJAX上传-在继续之前不等待响应,php,javascript,jquery,ajax,upload,Php,Javascript,Jquery,Ajax,Upload,我正在使用(非常好,顺便说一句)和一个S3处理程序来上传文件,然后通过S3API(从PHPSDK)将它们传输到S3 它起作用了。问题是,在大的文件(>1GB)上,可能需要几分钟的时间(通过创建对象)将任何内容传输到S3上。执行此操作的PHP文件将挂起,直到此过程完成。问题是,上传程序(使用)似乎放弃了等待,每次都重新启动 我认为这与PHPINI的“max_input_time”或类似的东西有关,因为它似乎要等待60秒左右,尽管现在看起来有所不同。我在PHPINI和其他相关文件中增加了最大输入时间

我正在使用(非常好,顺便说一句)和一个S3处理程序来上传文件,然后通过S3API(从PHPSDK)将它们传输到S3

它起作用了。问题是,在大的文件(>1GB)上,可能需要几分钟的时间(通过创建对象)将任何内容传输到S3上。执行此操作的PHP文件将挂起,直到此过程完成。问题是,上传程序(使用)似乎放弃了等待,每次都重新启动

我认为这与PHPINI的“max_input_time”或类似的东西有关,因为它似乎要等待60秒左右,尽管现在看起来有所不同。我在PHPINI和其他相关文件中增加了最大输入时间,但没有进一步增加

我还考虑了(更有可能)JS,无论是在脚本中还是在jQuery方法中都有一个超时。开发人员(blueimp)说,前端脚本中没有这样的超时,我也没有看到任何超时,尽管jQuery Ajax方法选项中引用了“超时”,但它似乎影响了它上传的整个时间,而不是等待响应的时间,所以这没有多大用处

感谢您提供的任何帮助或指导。

jQuery文档,网址: 说:

超时

为请求设置超时(以毫秒为单位)。这将覆盖 使用$.ajaxSetup()设置的任何全局超时。超时时间开始 在进行$.ajax调用时;如果有其他几个请求在 如果浏览器没有可用的连接,则有可能 请求在发送前超时。在jQuery1.4.x和 下面,如果 请求超时;访问任何对象成员都可能引发 例外。仅在Firefox 3.0+中,脚本和JSONP请求不能 被超时取消;脚本将运行,即使它在之后到达 超时时间

除此之外,检查php set\u time\u limit函数和php max内存设置也是一个好主意

无论如何,在我看来,最好的方法就是实现这样的错误回调

$.ajax('yourScript.php',{
 error:function(jqXHR){  echo this error ... }
});
jQuery文档说:

如果 请求失败。它们接收jqXHR,一个指示错误的字符串 类型和异常对象(如果适用)。一些内置错误将被删除 提供一个字符串作为异常对象:“中止”、“超时”、“否” 运输”

这可能会提示您是谁(服务器或客户端)停止了传输


希望这有帮助

一次性上传大文件可能会导致各种各样的问题。最好的做法是在客户端将文件分割成块,然后将它们发送到服务器,一次发送一个块,并让服务器在将其推送到S3之前将这些块重新组装到原始文件中


只要您可以使用
window.FileReader
File.prototype.slice
就可以使用javascripts
.split()
对文件进行分割。

所以问题是通过PHP从浏览器上传到S3需要几分钟;或者从浏览器上传到PHP,然后从PHP上传到S3;还是从服务器上传到S3,而浏览器只是在监视作业?offtopic:我发现制作自己的文件上传程序(如blueimp)要比理解和编辑容易得多blueimp@jcolebrand这是因为从服务器端的PHP到S3的传输需要几分钟的时间,而且在完成之前前端脚本没有响应,所以他们假设它失败并重新启动。那么为什么呢不让它成为一个两步的过程吗?当然,投票操作不需要复杂的东西?上传时向文件写入状态消息,并轮询该文件的更改?当然可以。我试图用一种方法解决它,因为第二种方法并不复杂,而是另一种潜在的失败点,如果可以解决,我会的。娜达,我会继续说下去。这听起来很诡异,依靠客户端浏览器分割文件,然后希望能正确地重新组装-这似乎不是一个非常成熟的做法?不报告错误,这是一个巨大的痛苦。我认为在报告进展的过程中有一些东西被搞砸了,因为它完全是从零开始的。