修改ECSHOP,支持图片云存储化

  • 内容
  • 评论
  • 相关

为了提高页面加载速度和适应中国复杂的网络环境,我决定把所有商品图片都分离到专业的云存储服务器上,具有CDN加速功能

一)生成一个域名 img.xxxx.com 并映射到自己的云存储别名,然后把全部图片(含目录结构)上传到 云存储空间
在config.php 增加
/* 商品详情图片地址替换 */
// 总开关,1启用云存储,0使用本地图片
$imgserver = 1;
// 匹配图片前缀,即上传图片src的共同部分,在“/”前加“\”
$imgserver_pattern = '\/images\/upload';
// 域名前缀,最后不用加“/”
$imgserver_path = ' http://空间名.b0.upaiyun.com/';

二)
goods.php 在170-180行左右中寻找
/* 购买该商品可以得到多少钱的红包 */
        if ($goods['bonus_type_id'] > 0)

加入以下部分:
// 商品详情图片地址替换
if ($imgserver == 1) {
    $goods['goods_desc'] = preg_replace('/'.$imgserver_pattern.'/i', $imgserver_path.'\0', $goods['goods_desc']);
}

到$smarty->assign('goods', $goods);
这一句代码之前即可

三)
在/includes/lib_common.php中大约2187行,找到下面代码,增加红色部位即可。

/**
* 重新获得商品图片与商品相册的地址
*
* @param int $goods_id 商品ID
* @param string $image 原商品相册图片地址
* @param boolean $thumb 是否为缩略
* @param string $call 调用方法(商品图片还是商品相册)
* @param boolean $del 是否删除图片
*
* @return string   $url
*/
function get_image_path($goods_id, $image='', $thumb=false, $call='goods', $del=false){
    $url = empty($image) ? $GLOBALS['_CFG']['no_picture'] : $image;
  
    if( $GLOBALS['imgserver'] == 1){
        $url = str_replace('images/','http://img.xxxx.com/images/',$url);  // 修改产品主图路径,by layen 明朗
    }
   
    return $url;
}

 

 

 

 

1)安装lftp:
yum install lftp
这里使用yum安装,更简单。

2)添加执行权限:
复制代码 代码示例:
chmod +x /root/AutoBackupToFtp.sh
crontab实现每天自动运行:
crontab -e
输入内容:
00 00 * * * /root/AutoBackupToFtp.sh
说明:
00 00为时间分/小时,可自行修改,例如:30 12 ***,则每天12.30运行此脚本。

说明:
以上代码,用到了lftp命令,及crontab自动化任务。

3)脚本文件AutoBackupToFtp.sh
//ssh里面,直接执行 ~/autoBackupToFtp.sh 一切正常再加到crontab里面自动执行
#!/bin/bash
lftp
open v0.ftp.upyun.com
user "szjavali/shaiwa" "passwd"
lcd /alidata/www/images
cd  /images
mirror -R --verbose=3 --only-newer --only-missing --parallel=3  --exclude upload
exit

评论

0条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注