简单可以使用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.
文件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.