我有一个简单的脚本,可以动态地从Cloudfront存储桶获取图像,调整它们的大小,将它们转换为有效的数据URL并在页面上显示它们。
我遇到的问题是加载时间。下面的脚本加载大约需要12秒(每张图像大约需要1到1.5秒)
是否有任何建议的方法可以加快速度?
$mango = Mango::factory('illustration')->load(9)->as_array();
$images = array();
foreach($mango as $data)
{
$image = Image::factory('cloudfrontbucket' . urlencode($data->illustration), 'imagick');
$image = $this->data_uri($image->resize(200), 'image/png');
$images[$data->id]['image'] = $image;
$images[$data->id]['id'] = $data->id;
}
提前致谢。
答案 0 :(得分:0)
基本上,你不能加快图像大小调整过程本身的速度。该模块使用GD或ImageMagick,它们是核心的php扩展,并尽可能快地运行。唯一的开销是常规的Kohana东西。如果你想加快这个过程,你应该考虑一种加速Kohana本身的方法,例如@ThePixelDeveloper指出的Gearman。
如果无法减轻负载,则可以解决此问题,以限制您一次处理的图片。下一次脚本运行时(通过cronjob或者如果你没有访问crontab的穷人cron),只需检查哪些图片尚未处理并拍摄一些。