在不同的服务器/子域上存储和检索用户文件

时间:2010-12-09 19:10:28

标签: php

我正在寻找有关将用户上传的文件存储在不同服务器或子域上的最佳做法的快速信息......

例如,Facebook上的照片当然不在facebook.com/files/users/453485等... 而是在photos.ak.fbcdn.net等等......

我想知道如何使用php我可以上传到不同的服务器,同时保持与原始的mysql连接...是否可能?

2 个答案:

答案 0 :(得分:0)

Facebook使用内容传送网络(cdn,因此是fbcdn或facebook内容传送网络),并且可能使用web服务将二进制数据(照片)从服务器传递到服务器。

Rackspace Cloud提供类似的服务。以下是他们的PHP库访问其webservice api的示例应用程序:http://cloudfiles.rackspacecloud.com/index.php/Sample_PHP_Application

答案 1 :(得分:0)

我将假设您有多个Web服务器,并且希望能够在每个服务器上访问同一组文件。在这种情况下,每台机器可以访问的某种共享存储可能是一个很好的起点。

以下是我使用过的几个选项:

如果您无法控制硬件或无法安装额外的软件,我建议使用Amazon S3。有一个api可以用来来回传送文件。唯一的缺点是你没有使用你可能已经使用过的存储空间,这将花费你一些钱。

如果你有权访问硬件和软件,MogileFS有点像S3,因为你有api来访问文件。但不同之处在于您可以使用现有存储而无需额外费用。

NFS是人们开始的典型场所,因为这是最简单的入门方式。缺点是您必须能够配置服务器,并为它们设置NFS卷以进行安装。

但是,如果我开始提供高容量照片托管服务,我会使用S3,并且我会在其前面放置像Akamai这样的CDN。