0

我们有一个应用程序可以解析来自外部源的数据并将其本地化,保存和调整图像大小作为该过程的最后一步。鉴于我们处理的规模 [迄今为止 200 万张图像],我们一直在使用 Rackspace 文件来托管数据......

require('/var/libs/rackspace/cloudfiles.php');
$auth = new CF_Authentication('xxx', 'yyyy');
$auth->authenticate();
$conn = new CF_Connection($auth,true);
$container = $conn->get_container('some container');

foreach ($lotsofitems as $onitem){

    // check the record
    // save the image to disk with cURL
    // resize it into 4 more versions
    // post it to rackspace

    if(file_exists('/var/temp/'. $image_id . '_full'. $image_type)){
        $object = $container->create_object($image_id . '_full' . $image_type);
        $object->load_from_filename('/var/temp/'. $image_id . '_full' . $image_type);
        unlink('/var/temp/'. $image_id . '_full' . $image_type); // remove the temp save
    }

    if(file_exists('/var/temp/'. $image_id . '_big'. $image_type)){
        $object = $container->create_object($image_id . '_big' . $image_type);
        $object->load_from_filename('/var/temp/'. $image_id . '_big' . $image_type);
        unlink('/var/temp/'. $image_id . '_big' . $image_type); // remove the temp save
    }

    if(file_exists('/var/temp/'. $image_id . '_med'. $image_type)){
        $object = $container->create_object($image_id . '_med' . $image_type);
        $object->load_from_filename('/var/temp/'. $image_id . '_med' . $image_type);
        unlink('/var/temp/'. $image_id . '_med' . $image_type); // remove the temp save
    }

    // delete the original
    // repeat

}

在优化了我们的解析器、GD 等之后,我们对这个过程进行了基准测试,处理图像大约需要 1 秒,但是将 5 个图像变体传输到 Rackspace 的每个项目需要 2-5 秒,有时会达到 10+。

  • 获取图片:1341964436
  • 得到图片:1341964436
  • 调整大小的图像:1341964437
  • 一张图片:1341964446
  • 阴天图片:1341964448
  • 完成图片:1341964448

一些额外的点:

  1. 我们的处理服务器也在 Rackspace 的云上。
  2. 共有 5 个图像版本,大小从 30kb 到 2kb 不等
  3. 所有图像在传输之前保存到磁盘并在传输后删除
  4. 我们的容器 [我们使用几个整体,但每个项目一个] 启用了 CDN

有人对批量转移到 Rackspace 有建议吗?我们应该在一定的持续时间/请求数量后重新连接吗?以其他方式优化我们的连接?或者它只是关于分叉进程并运行大量调用。

4

1 回答 1

1

您是否尝试过使用 CloudFuse?它允许您将 Rackspace CloudFiles 存储桶挂载为挂载。

我已经使用过它,它非常好 - 制作它的人适用于 Rackspace。

http://sandeepsidhu.wordpress.com/2011/03/07/mounting-cloud-files-using-cloudfuse-into-ubuntu-10-10-v2/

于 2012-07-16T20:48:00.293 回答