使用PHP在不同的站点/主机之间复制图像


Copy images between different sites/hosts using PHP

我计划建立一个cms系统。

CMS系统将设于:www.mycompany.com/customer

最终网站将位于:www.customer.com

我需要找出复制文件的最好方法。图像)来自:www.mycompany.com/customer/media: www.customer.com/media

注意: CMS和客户页面将位于不同的主机上。我想用PHP构建这个函数。

一些想法:

最优的解决方案是,无论图像如何上传或更新,都可以自动克隆这两个目录。也许如果有一种方法可以检测到www.mycompany.com/customer/media的变化,那么www.customer.com/media就可以收到通知,并发送一个更新图像的请求。

还有一个愿望是,如果登录到CMS,图像只能从www.mycompany.com/customer/media访问:S

提示吗?

您不应该使用FTP(不安全)或PHP进行复制,
试试rsync:-

什么是rsync
http://en.wikipedia.org/wiki/Rsync

rsync是一个用于类unix和Windows系统的软件应用程序和网络协议,它将文件和目录从一个位置同步到另一个位置,同时在适当的时候使用delta编码最小化数据传输。rsync的一个重要特性在大多数类似的程序/协议中都找不到,那就是镜像在每个方向上只发生一次传输。Rsync可以复制或显示目录内容和复制文件,可选择使用压缩和递归。

换句话说,是为镜像或复制(是行业标准)而设计的

,

  1. 设置公钥以允许源服务器能够ssh到目标服务器
  2. 在源服务器上设置cronjob来执行rsync

cronjob是做什么的
简而言之,它应该将选择的源目录rsync到目标服务器,
一个简单的例子:-

* * * * * rsync -avz /home/www.mycompany.com/www $HOST:/home/www.customer.com/www
                     ^ source server directory   ^ destination server, 
                                                   and directory

然而,rsync太难用几句话来描述,你可以看一下:-http://www.cyberciti.biz/tips/linux-use-rsync-transfer-mirror-files-directories.html(作为开始)

另一种可能性是使用版本控制软件,如-:

    git
  1. svn

或者在CDN上使用(就像@Amir Raminfar提到的),它本身已经是一个完整的文件分发解决方案。

只需从mycompany.com调用ftp或scp呼叫customer.com并上传文件。

或者,你可以使用CDN,这可能有点太多的工作,但它会给你最佳的解决方案,并具有良好的性能。你可以把图片上传到一个普通的服务器上,然后让customer.com从那个网站上获取图片。这为您提供了并行下载资产的好处。

最后,你可以在customer.com上运行一些可以接受上传的web服务。

我不会做你建议的通知系统,因为它不会完全是即时的,它会导致在实际看到图像之前的一些时间。

可以为www.mycompany.com创建DB。但是主机必须允许远程访问数据库。为customer.com创建crontab,用于检查远程数据库中的新记录。这个脚本可以允许注册用户。

您应该为www.mycompany.com images文件夹创建htaccess。允许访问自身和customer.com下载(例如复制)图像。

这样,所有注册用户都可以下载任何图像。这对你来说可能是错的。

如果你需要限制对每个图像的访问,那么你应该将图像存储在DB中,并为每个图像和请求生成加密url。在这种情况下,您应该使用远程DB或SOAP服务获取图像。