通过PHP优化批量上传到Rackspace云文件

时间:2012-07-10 23:50:28

标签: php cdn rackspace

我们有一个应用程序可以解析来自外部源的数据并将其本地化,作为流程的最后一步保存和调整图像大小。鉴于我们的处理规模[迄今为止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. 之后删除
  5. 我们的容器[我们使用几个整体,但每个项目一个]启用了CDN
  6. 有没有人有关于批量转移到Rackspace的建议?我们应该在一定的持续时间/数量的请求后重新连接吗?以其他方式优化我们的连接?或者只是分配流程并运行大量调用。

1 个答案:

答案 0 :(得分:1)

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

我已经使用了它,它非常好 - 他们让它适用于Rackspace。

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