请教一个文件上传时间很长的问题
1. 运行环境
centos
1). 当前使用的 Laravel 版本?
laravel5.8
2). 当前使用的 php/php-fpm 版本?
PHP 版本:7.4
php-fpm 版本:7.4
3). 当前系统
centos, 4C8G
5). 相关软件版本
lnmp架构
nginx配置:
php配置:
2. 问题描述?
在后台进行文件上传,使用的是el-upload
这是前端相关代码
//页面代码
<el-upload
:action="action"
ref="upload"
accept="application/zip"
:on-remove="removeFile"
:auto-upload="true"
:file-list="fileList"
:http-request="uploadFile"
:on-change="handleChange"
>
<el-button :loading="progress" slot="trigger" size="mini" type="primary">
{{ progress ? '上传中' : '选择文件' }}
</el-button>
<el-alert
class="pd10"
size="mini"
:closable="false"
title="仅支持zip格式,上传后如需修改,则再次点击“选择文件”重新上传即可"
type="info"
/>
</el-upload>
//页面上传方法
async uploadFile({file}) {
const isZip = file.name.endsWith('.zip');
if (!isZip) {
this.fileList = []
this.$message.error('请选择zip文件!');
return false;
}
const {progress} = this
if (!progress) {
this.progress = true
this.disabled = true
this.saving = true
await this.$api.storage.Parse_file(file).then((res) => {
console.log(res)
})
}
},
//上传接口
Parse_file(file) {
return createCancellablePromise(
async (resolve, reject, setCancel) => {
try {
const rp = readBlobAs(file, 'ArrayBuffer')
setCancel(rp.cancel)
let data = await rp
const hash = md5(data)
let param = new FormData();
param.append('file', file);
param.append('hash', hash);
const res =await http.post('/upload',param,{
headers: { 'Content-Type': 'multipart/form-data' },
validateStatus: s => s === 200 || s === 201,
cancelToken: new admin.CancelToken(setCancel)
})
resolve(res)
} catch (err) {
reject(http.isCancel(err) ? createCancel() : err)
}})
}
//后端代码
public function upload(Request $request){
$file = $request->file('file');
//后面是具体业务逻辑,解压读取内容之类的
}
现在的问题是,从页面发起请求到后端接收file这段时间很长,大概150M的zip上传要执行差不多2分钟
这个是上传差不多111M的时间
3. 您期望得到的结果?
想请问一下,这个时间这么长是和什么有关系呢?或者有什么方法优化一下呢?
哪家云服务商啊
如果是阿里云,腾讯云的话,按宽带计费是这样的,带宽低于10M的,上传速度就是10Mbp/s,差不多1.25M/s,150M大小文件就需要120秒,正好两分钟,高于10M的就是上下行对等,你想快就开按量付费宽带拉到最大或者用oss