PHP.51-TP框架商城应用实例-前台3-楼层推荐、TP框架雪崩问题
2021-06-30 00:03
标签:取出 img targe foreach 方法 price cat 控制 信息 楼层推荐 效果图 1、增加表字段 商品表 分类表 2、修改商品模型和分类模型接收字段is_floor 3、修改商品和分类相关的表单 4、后台制作推荐方法 4.1在分类模型中增加获取前台楼层数据的方法 4.2在IndexController.class.php控制器中取出数据 4.3在首页中循环输出 ==> 包括品牌信息 5、为前台页面生成缓存 扩展:解决TP框架雪崩问题 生成静态缓存的雪崩问题:如果网站的并发量在100【每秒有100个刷新】,在缓存页面失效的一瞬间,100个并发同时进入到后端数据库有可能让数据库崩溃。 解决方法:修改TP底层源码,在生成静态缓存页时加锁,在缓存失效时只让一个客户端进入控制器 ==> PHP文件锁 PHP.51-TP框架商城应用实例-前台3-楼层推荐、TP框架雪崩问题 标签:取出 img targe foreach 方法 price cat 控制 信息 原文地址:http://www.cnblogs.com/zixuanfy/p/7140517.html/****** 获取前台首页楼层中的数据 ***********/
public function floorData()
{
$floorData = S(‘floorData‘);
if($floorData)
return $floorData;
else
{
// 先取出推荐到楼层的顶级分类
$ret = $this->where(array(
‘parent_id‘ => array(‘eq‘, 0),
‘is_floor‘ => array(‘eq‘, ‘是‘)
))->select();
//var_dump($ret);die;
$goodsModel = D(‘Admin/Goods‘);
// 循环每个楼层取出楼层中的数据
foreach ($ret as $k => $v)
{
/*********** 这个楼层中的品牌数据 *************/
// 先取出这个楼层下所有的商品ID
$goodsId = $goodsModel->getGoodsIdByCatId($v[‘id‘]);
// 再取出这些商品所用到的品牌
$ret[$k][‘brand‘] = $goodsModel->alias(‘a‘)
->join(‘LEFT JOIN __BRAND__ b ON a.brand_id=b.id‘)
->field(‘DISTINCT brand_id,b.brand_name,b.logo‘)
->where(array(
‘a.id‘ => array(‘in‘, $goodsId),
‘a.brand_id‘ => array(‘neq‘, 0),
))->limit(9)->select();
//var_dump($ret[0][‘brand‘]);die;
/**** 取出未推荐的二级分类并保存到这个顶级分类的subCat字段中 ****/
$ret[$k][‘subCat‘] = $this->where(array(
‘parent_id‘ => array(‘eq‘, $v[‘id‘]),
‘is_floor‘ => array(‘eq‘, ‘否‘),
))->select();
//var_dump($ret[0][‘subCat‘]);die;
/****** 取出推荐的二级分类并保存到这个顶级分类的subCat字段中 *******/
$ret[$k][‘recSubCat‘] = $this->where(array(
‘parent_id‘ => array(‘eq‘, $v[‘id‘]),
‘is_floor‘ => array(‘eq‘, ‘是‘),
))->select();
//var_dump($ret[0][‘recSubCat‘]);die;
/***** 循环每个推荐的二级分类取出分类下的8件被推荐到楼层的商品 ****/
foreach ($ret[$k][‘recSubCat‘] as $k1 => &$v1)
{
//取出这个分类下所有商品的ID并返回一维数组
$gid = $goodsModel->getGoodsIdByCatId($v1[‘id‘]);
$gids = implode(",", $gid);
//var_dump($gids);die;
// 再根据商品ID取出商品的详细信息
$v1[‘goods‘] = $goodsModel->field(‘id,mid_logo,goods_name,shop_price‘)
->where(array(
‘is_on_sale‘ => array(‘eq‘, ‘1‘),
‘is_floor‘ => array(‘eq‘, ‘是‘),
‘id‘ => array(‘in‘, $gids),
))->order(‘sort_num ASC‘)->limit(8)->select();
//var_dump($v1[‘goods‘]);die;
}
}
S(‘floorData‘, $ret, 5);
return $ret;
}
}
文章标题:PHP.51-TP框架商城应用实例-前台3-楼层推荐、TP框架雪崩问题
文章链接:http://soscw.com/essay/99592.html