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

时间:2011-12-01 05:05:42

标签: php image copy

我计划建立一个CMS系统。

将在以下位置找到并完全管理CMS系统: www.mycompany.com/customer

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

我需要找出复制文件的最佳方法(例如图片) 来自:www.mycompany.com/customer/media :www.customer.com/media

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

一些想法:

最佳解决方案是,无论图像如何上传或更新,都可以自动克隆两个目录。 Maby如果有办法检测到www.mycompany.com/customer/media的更改,则可以通知www.customer.com/media并发送更新图像的请求。

如果登录到CMS,也可以从www.mycompany.com/customer/media访问图像:S

有任何提示吗?

3 个答案:

答案 0 :(得分:1)

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

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

  

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

换句话说,设计用于镜像或​​复制(是行业标准)

一般来说,

  1. 设置公钥以允许源服务器能够ssh到目标服务器
  2. 在源服务器中设置cronjob以执行rsync
  3. 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(作为开始)

    其他可能性是使用版本控制软件,如 - :

    1. git
    2. SVN
    3. 或者在CDN上使用(如@Amir Raminfar所提到的),它本身已经是文件分发的完整解决方案。

答案 1 :(得分:0)

只需从mycompany.com拨打ftp电话或scp电话到customer.com并上传文件即可。

或者,您可以使用CDN这可能有点太多工作,但它会为您提供最佳解决方案并具有出色的性能。您可以上传到公共服务器,并从该网站获取customer.com以获取图像。这为您提供并行下载资产的好处。

最后,您可以在customer.com上运行某种可以接受上传的Web服务。

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

答案 2 :(得分:0)

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

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

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

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