wax*_*cal 7 javascript php ajax upload jquery
我正在使用Blueimp的jQuery Uploader(非常好,它太btw)和一个S3处理程序来上传文件,然后通过S3 API(来自PHP SDK)将它们传输到S3.
有用.问题是,对于大文件(> 1GB),可能需要花费几分钟时间(通过create-object)传输到S3上.执行此操作的PHP文件将挂起,直到此过程完成.问题是,上传者(利用jQuery Ajax方法)似乎放弃了等待并且每次都重新开始.
我认为这与PHP INI'max_input_time'等有关,因为它似乎要等待大约60秒,尽管现在看起来有所不同.我已经将PHP INI和其他相关的max_input_time提升了 - 但没有进一步.
我也考虑过(更有可能)JS在脚本或jQuery方法中都有超时.开发人员(blueimp)说前端脚本中没有这样的超时,也没有看到任何,虽然在jQuery Ajax方法选项中引用了'timeout',但它似乎影响了它上传的整个时间而不是等待为了回应 - 所以没有多大用处.
任何帮助或指导感激不尽.
http://api.jquery.com/jQuery.ajax/上的 jQuery 文档 说:
暂停
设置请求的超时(以毫秒为单位)。这将覆盖使用 $.ajaxSetup() 设置的任何全局超时。超时时间从调用 $.ajax 时开始;如果多个其他请求正在进行中并且浏览器没有可用的连接,则请求在发送之前可能会超时。在 jQuery 1.4.x 及以下版本中,如果请求超时,XMLHttpRequest 对象将处于无效状态;访问任何对象成员都可能引发异常。仅在 Firefox 3.0+ 中,脚本和 JSONP 请求无法通过超时取消;即使脚本在超时时间之后到达,它也会运行。
除此之外,检查 php set_time_limit 函数和 php 最大内存设置也可能是个好主意。
无论如何,在我看来最好的方法是像这样实现错误回调
$.ajax('yourScript.php',{
error:function(jqXHR){ echo this error ... }
});
Run Code Online (Sandbox Code Playgroud)
jQuery 文档说:
如果请求失败,将按照注册顺序调用错误回调。它们接收 jqXHR、指示错误类型的字符串以及异常对象(如果适用)。一些内置错误将提供一个字符串作为异常对象:“abort”、“timeout”、“No Transport”。
这可能会提示您谁(服务器或客户端)停止了传输。
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
1146 次 |
| 最近记录: |