新增图片服务器后的服务器图片同步方法

一般的小型网站在一台服务器工作,但是当用户数和访问量起来后,发现一台服务不够用了,带宽也不够用了,


这时我们就需要增加一台服务器来作为图片服务器。


那么我们应该如何来完成这个工作呢?


1是准备一个域名用作图片的地址。


2是把原网站的内容拷贝到新的图片服务器上去。注意图片的目录结构要和原网站的目录结构相同。


3.修改图片上传文件。当图片上传成功时,我们通过某一个事件把这个图片拷贝到图片报务器上去。


4、修改前台显示的html代理,把图片的前缀都加上新的域名地址,当然是站内的图片才加,如果是引用的站外的就不用加。


 


至此思路完成了。


上面4步中,1,2,4都好解决。关键是第3步可能有些朋友就不好理解了。


我们要把一个图片拷贝到图片服务器上去,有几种方法,一是通过socket方式,就是c/s方式,这个方式实现起来有一点麻烦。


另一个是ftp方式,要在图片服务器上安ftp服务,开通帐号,再在主服务器上用ftp方式上传,也很麻烦。


还有一种http方式,这种方式最方便实现,我们主要讲的就是这种。


思路:


当在主服务器上上传成功图片时,就调用图片服务器上的一个url,并把这个图片地址做为一个参数传递过去。


图片服务器上的这个url文件接收这个参数,并下载这个图片保存到相应的目录,这个相应的目录就以在参数中传递过来。


这样,图片就同步了.


下面上代码:就是图片服务器的这个url文件:


<?php
/**
本功能实现图片服务器间的同步,当主服务器上上传了图片时,就调用此页面并把图片地址作为参数传递过来
使用方法如:http://www.aaaa.com/downloadpic.php?picurl=images/111.jpg
*/


function mkdirs($dir, $mode = 0777){
     if (is_dir($dir) || @mkdir($dir, $mode))
         return true;
     if (!mkdirs(dirname($dir), $mode))
            return false;
        return @mkdir($dir, $mode);
}
 
$picurl=$_GET["picurl"];
$mubiaoyuming="http://www.xxxxx.com";
$pic=$picurl;


if($picurl=="") die("没有图片地址");
$str= file_get_contents($mubiaoyuming."/".$pic);


$rootdir=dirname(__FILE__);
$rootdir=str_replace("\\","/",$rootdir);//转换目录中的dir
preg_match("/^[\S]+[\/]/",$pic,$matchs);


$dir="";
if($matchs) $dir=$matchs[0];


mkdirs($rootdir."/".$dir);
$h=fopen($rootdir."/".$pic,"w+");
echo (fwrite($h,$str))?"dook":"dopass";
?>


当然,你可以把完变理更加完善,比如安全验证等.