将discuz x2.5 附件移动到分布式文件系统上

简单可以使用discuz的 ftp存放附件,然后再通过同脚本同步到每个节点,这样是最简单的办法。下面修改是修改代码,直接将附件存放到MogileFS。

文件source\class\discuz\discuz_upload.php 为类discuz_upload 增加方法:save_to_remote()
比如我的:
    function save_to_remote() {
        $key=$this->attach["attachment"];

        $source=$this->attach['tmp_name'];
        if(!discuz_upload::is_upload_file($source)) {
            $succeed = false;
        }else{
            //上传到远程mfs去
            $mfs=$this->get_mfs();
            $mfs->upload($key,$source);
            $succeed=true;
        }
        $this->errorcode = 0;
        if($succeed && $this->del_source==1)  {
            @unlink($source);
        }

        return $succeed;
    }

get_mfs()是一个mfs类的工厂类方法,产生一个唯一的mfs连接类,修改save()方法将set_to_local()修改为set_to_remote(),这里key就是discuz生成的附件目录,这个类检查,创建附件目录方法可以直接返回true,在先端显示的时候加一个图片集群的domain,最后附件的url就是 domain+key.

猜你喜欢

转载自lucklrj.iteye.com/blog/1676627
今日推荐