我想更快地将mp3文件上传到我的s3存储桶。我正在使用this 束。上传速度太慢,因为上传5MByte需要5分钟。
public function labelAddSongAction($label){
$start = microtime(true);
$path = $this->request->files->get('file')->getRealPath();
$client = $this->get('aws.s3');
$aws_conn = microtime(true);
$song = $this->getDoctrine()->getRepository("WebsiteDeviceBundle:Labels")->addSong(
$label,
$this->request->get('title'),
$this->request->get('artist'),
$this->request->get('album'),
$this->request->get('genre'),
null,
$this->request->get('duration'),
$this->request->get('hash')
);
$db = microtime(true);
$result = $client->putObject(array(
'Bucket' => "bucket",
'Key' => 'masters-'.$song->getId().".".$this->request->files->get('file')->getClientOriginalExtension(),
'SourceFile' => $path
));
$putobj = microtime(true);
//dboperation with the result
$end = microtime(true);
die(
($aws_conn-$start)." aws conn<br>".
($db-$aws_conn)." db<br>".
($putobj-$db)." putobj<br>".
($end-$putobj)." db2<br>"
);
}
它有效,但速度太慢。
这是输出时的输出(此尝试是使用3Mbyte文件,因为更多,连接将超时)
0.018278121948242 aws conn
0.014150857925415 db
2.4144551753998 putobj
0.0062119960784912 db2
我的费用是在俄勒冈州(小实例),我的s3桶在爱尔兰。我是从意大利上传的(450kbps上传)。直接从aws存储桶控制台上传相同的文件大约需要一分钟。
为了加快速度,您有什么建议? 将我的实例移到爱尔兰会显着改变上传时间吗? 升级实例会比移动它更好吗?
答案 0 :(得分:0)
将我的桶移到俄勒冈州(运行实例的地方)后,输出
0.017653942108154 aws conn
0.015467882156372 db
0.36472797393799 putobj
0.006134033203125 db2
5Mb文件(不到一分钟)。仍然很慢,但也许这次取决于我的上传/下载互联网连接速度以及我在意大利和服务器位于俄勒冈州的事实。
我的操作的服务器执行时间正常。