discuzx2 附件做cdn

来源:互联网 发布:手机连不上4g网络数据 编辑:程序博客网 时间:2024/05/16 11:14

1、为提高公司论坛的性能,公司决定做论坛附件的cdn

2、上传附件:通过ftp的方式上传附件,如果想直接跨域上传附件,我觉得会很困难的,目前本人尚没有方法做到跨域上传附件。

3、本公司只是为data重新指定了一个域名,所以上传不影响。

4、php header函数下载东西,最重要的就是文件的路径名和文件的大小。开始我想使用file_put_content()函数来获得,但是没有成功,还有discuz里面的readerfile函数也是不能读取另一个域名下的文件。所以我使用了curl函数

修改方法:

1、修改图片在页面上的显示路径,这个就在discuz后台--全局--上传设置中设置下就好了

2、修改source/module/forum/forum_attachment.php。里面的$_G ['setting'] ['attachdir']的值,可以再初始化时修改,也可以在该文件的头部修改。

3、获得文件的大小及内容:函数如下(简单写了下,哈),使用getfilesize()函数取得文件的大小及内容,然后使用leilei_readfile()代替getlocalfile()函数中的readfile()函数就可以了。

function getfilesize($filename){;
$ch=curl_init();
        $timeout=5;
        curl_setopt($ch,CURLOPT_URL,$filename);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
        $img=curl_exec($ch);
        curl_close($ch);
        $image['size'] = strlen($img);
        $image['content'] = $img;
        return $image;
        
}

function leilei_readfile($filename){
ob_start();
global $isImages;
$fp = @fopen ( $filename, 'rb' );
$image = getfilesize($filename);
if($fp){
if($isImages){
echo $image['content'];die;
}
echo fread($fp,$image['size']);
fclose($fp);
}else{
//var_dump("dddsddsdd");die;
showmessage('attachment_nonexistence');
}
}

原创粉丝点击