对于laravel,已经无力吐槽,不能支持多线程是个永远的痛,如果这个问题在java中,直接另辟一个线程就可以搞定,分分钟就可以返回数据!
问题:上传视频至阿里云oss,大文件莫名的会上传两次,而且前端每次大约在4.1min的时候断开连接
思路:因为在阿里云的控制台可以看到同一个视频被上传了两次,猜测是前端框架或者后端框架做了一次链接retry
解决方案:
1.后端框架(laravel)验证:
public function testTimeOut(){
sleep(400);
return 'sleep await';
}
可以看出后台在400s之后可以返回数据,基本可以排除是后台laravel框架的问题
2.前端框架(Vue)验证
原先配置文件默认超时时长为2min(这里也是猜测)
然后开始上传视频,控制台发送upload请求,刷新阿里云控制台会看到文件正在上传,奇妙的事情发生了控制报错net err_empty_response,然后在刷新阿里云控制台会发现刚才上传的视频已经完成,但是还有同样的一个视频正在上传,所以猜测在前端没有得到response后,又尝试了请求了一次,导致视频会被上传两次!所以可以断定问题出在前端框架上。
经过一顿的测试和研究发现,
这里设置timeout后可以有效的解决刚才的问题!
☆声明:原创文章,转载请标明出处!
写自己的代码,送给那些曾经瞧不起你的人!
----------------------lonelykeyboard
2019.04.19