Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Fineuploader在服务器响应延迟时重新启动上载_Javascript_Fine Uploader_Ajax Upload - Fatal编程技术网

Javascript Fineuploader在服务器响应延迟时重新启动上载

Javascript Fineuploader在服务器响应延迟时重新启动上载,javascript,fine-uploader,ajax-upload,Javascript,Fine Uploader,Ajax Upload,遇到了一个非常奇怪的问题,我正在寻找方向 上下文:在WordPress中上载大文件(最大100MB)。作为该过程的一部分,服务器端还运行着一个长任务(通过API使用分块将文件推送到DropBox),因此对于较大的文件,响应不可避免地会延迟。通过执行PHP的sleep()函数,可以轻松模拟这一部分 问题:Fineuploader达到100%,显示waitingForResponse消息约15秒(此时服务器仍未完成处理),然后继续从头开始重新启动上载。第二次尝试后,它声称没有从服务器收到任何信息,并

遇到了一个非常奇怪的问题,我正在寻找方向

上下文:在WordPress中上载大文件(最大100MB)。作为该过程的一部分,服务器端还运行着一个长任务(通过API使用分块将文件推送到DropBox),因此对于较大的文件,响应不可避免地会延迟。通过执行PHP的
sleep()
函数,可以轻松模拟这一部分

问题:Fineuploader达到100%,显示
waitingForResponse
消息约15秒(此时服务器仍未完成处理),然后继续从头开始重新启动上载。第二次尝试后,它声称没有从服务器收到任何信息,并将上载列为失败。控制台调试消息:

[FineUploader] xhr - server response received for 0
XMLHttpRequest { readyState=4, timeout=0, withCredentials=false, more...}
[FineUploader] responseText = 
服务器日志显示两个请求,服务器两次回显成功的JSON;最后,服务器上有两个文件


问题:我能做些什么来解决这个问题?我是否可以定期向FineUploader返回一些内容以确保没有超时?

Fine Uploader没有设置超时机制。如果您看到超时,则可能是浏览器本身正在强制超时,或者浏览器和服务器之间的某个设备正在超时

我在过去使用AWS(AmazonWeb服务)时遇到过这个问题。与您的情况类似,在返回响应之前,在接收到整个文件之后,我必须在服务器端执行一些处理。当然,在这个过程中,没有发生TCP通信。原来ELB(弹性负载平衡器)的TCP空闲超时为1分钟。对大文件的处理超过此值,导致ELB终止请求


只有在完成请求/上载后,才能将响应返回给Fine Uploader。如果您真的想等待Fine Uploader返回一个“成功”响应,直到您的服务器端处理完成,那么您需要弄清楚是什么终止了您的请求。您的选项可能会增加终止请求的设备上的超时时间,或者简单地将处理委托给单独的线程服务器端,并在收到所有文件字节后立即返回成功响应。

是。对于AWS,您可以请求增加ELB的TCP空闲超时。这不是你可以修改自己的东西,所以你必须要求AWS管理员为你做这件事。我没有直接参与处理这个请求(我团队中的其他人被分配了这个任务),但我相信我们确实请求增加,并且得到了批准。在请求增加之前,我们只讨论了将处理委托给单独的线程并尽快返回响应。如果我的内存使用正确,那么就确定处理应该以内联方式进行。我明白了。你知道为什么要重启上传吗?这是预期的功能吗?可以是fine uploader的自动重试功能(如果启用)。如果这是一个很好的上传程序,您将在文件旁边看到一条“重试”状态消息。你看到过这样的事吗?不,不是真的。它在99%时挂起,然后重新启动。很可能是服务器正在关闭连接。我只是不明白为什么它不会立即失败(或者在一段较长的时间之后),但实际上会重新启动并完成上载。您是否启用了重试功能?从UI上看,Fine Uploader是否在命令重试?您看到的是哪种日志消息(选项中设置了debug:true)?