我在亚马逊上还有另一个问题,它与文件上传有关。我正在使用jquery文件上传和amazon API上传文件到amazon S3。我已经成功上传了,但是涉及到一个技巧。
我必须将图像存储在我的服务器上,然后使用以下命令将其从那里移动到 S3putObjectFile
S3的方法。现在该插件具有强大的功能来裁剪/调整图像大小,我已经使用它们很久了。现在当我将该插件与AWS集成时,我面临着性能问题上传所需的时间比正常情况要长,这引发了我们使用 AWS S3 而非传统方式的问题。
我必须改变我的上传处理程序.php文件以使其正常工作。这些是所做的更改。我将 AWS 上传代码的一部分添加到文件中735 至 750
$bucket = "elasticbeanstalk-2-66938761981";
$s3 = new S3(awsAccessKey, awsSecretKey);
$response = $s3->putObjectFile($file_path,$bucket,$file->name,S3::ACL_PUBLIC_READ);
$thumbResponse = $s3->putObjectFile('files/thumbnail/'.$file->name,$bucket,'images/'.$file->name,S3::ACL_PUBLIC_READ);
//echo $response;
//echo $thumbResponse;
if ($response==1) {
//echo 'HERER enter!!';
} else {
$file->error = "<strong>Something went wrong while uploading your file... sorry.</strong>";
}
return $file;
Here是 git 上 s3 类的链接。
正常上传到我当前的服务器(不是亚马逊),相同的图像上传15 secs,但在亚马逊S3上需要大约23 secs我无法找到更好的解决方案。我必须在上传到 S3 之前将图像存储在我的服务器上,因为我不确定是否可以处理它们在飞行中并直接上传到S3。
任何人都可以提出解决该问题的正确方法吗?是否可以将图像大小调整为内存中的不同大小并直接上传到 S3,从而避免将其保存到我们的服务器的开销?如果可以,任何人都可以指导我正确的方向吗?
感谢您的关注。
我相信大约 8 秒是创建不同尺寸图像版本的开销。
您可以采取不同的方法来消除上传时调整大小的开销。基本思想是允许上传脚本完成执行并返回响应,并将调整大小过程作为单独的脚本进行。
我想建议以下方法:
方法1.上传过程中不要调整大小!仅在第一次请求时动态创建调整大小的版本,并缓存生成的图像以直接为以后的请求提供服务。我在一些文章中看到一些提到 Amazon CloudFront 作为解决方案其他线程在 Stackoverflow 中。
方法 2. 在上传原始图像后,作为单独的异步请求调用用于创建调整大小版本的代码。缩放版本的推出将会有所延迟。因此,编写必要的代码来在网站中显示一些占位符图像,直到缩放版本可用。您必须找出某种方法来确定缩放版本是否可用(例如检查文件是否存在,或在数据库中设置一些标志)。一些方法这里建议进行异步 cURL 请求如果你想尝试一下。
我认为这两种方法都具有同等程度的复杂性。
建议使用其他一些方法:其他问题的答案.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)