php脚本定时更新商品列表
电商项目中为了提高抗并发能力,需要对商品列表做缓存,以下是更新缓存用的脚本:
//PRODUCTION_为缓存商品列表的临时key
//PRODUCTION为缓存商品列表key
$con = mysqli_connect($db_config['host'],$db_config['user'],$db_config['passwd'],$db_config['database']);
$redis = new Redis();
$redis->connect($redis_config['host']);
$redis->del(PRODUCTION_);$sql = "select * from production ORDER BY created_at";
$result = mysqli_query($con,$sql);
$artimages = [];
while($row = mysqli_fetch_assoc($result)){$redis->lPush(PRODUCTION_,json_encode($row));
}
/*
*之所以不直接更新到商品列表是因为当商品列表数据量比较大的时候,脚本执行的时间长,
*在del PRODUCTION之后 lPush PRODUCTION之前 用户访问网站的时候会出现读取不到
*商品列表的情况。
*先存入临时列表,再最后rename为实际被查询的key
*/
$redis->rename(PRODUCTION_,PRODUCTION);
上诉脚本只是一个demo,实际应用时需要加锁,否则在脚本未执行完,又到了crontab下一次自动执行的时候,就会出错。
以下是crontab脚本:
* * * * * root /usr/local/php/bin/php /xxx/xxxx/xxx/production.php >/dev/null 2>&1root 是执行脚本的用户
/usr/local/php/bin/php php脚本解释器,如果不写全路径的话会报错
>/dev/null 2>&1 忽略日志输出
php脚本定时更新商品列表相关推荐
- 每隔一段时间执行php_用php脚本,你如何定时更新商品列表
电商项目中为了提高抗并发能力,需要对商品列表做缓存,以下是更新缓存用的脚本: //PRODUCTION_为缓存商品列表的临时key //PRODUCTION为缓存商品列表key $con = mysq ...
- mysql颠覆实战笔记(五)--商品系统设计(二):定时更新商品总点击量
继续回到沈老师的MYSQL颠覆实战,首先回顾下上一节课的内容,请大家会看下上节课写的存储过程. 打开prod_clicklog表, 我们只要把日期(不含时分秒)的部分存在数据库中, 如果同一日期有相同 ...
- 使用Service+BroadcastReceiver实现定时更新天气
一.前言 最近两个月在做毕业设计:天气app,需要用到定时更新天气数据,用的是Service+BroadcastReceiver方法(之前对服务和广播也不是很了解,所以恶补了一下).关于这个方法我借鉴 ...
- Redis核心数据结构List应用场景-商品列表、缓存击穿、PV阅读量、抢红包、推送帖子、普通分布式锁、Redis可重入锁与红锁
List应用场景 Redis之List 一. Redis list命令实战 二.商品列表 高并发的淘宝聚划算实现技术方案 SpringBoot+Redis实现商品列表功能 二.缓存击穿 什么是缓存击穿 ...
- 创建商品类java_SSH框架网上商城项目第9战之添加和更新商品类别功能实现
上一节我们做完了查询和删除商品的功能,这一节我们做一下添加和更新商品的功能. 1. 添加商品类别1.1 添加类别的UI设计 我们先说一下思路:首先当用户点击"添加商品" ...
- 5- vue django restful framework 打造生鲜超市 -完成商品列表页(上)
使用Python3.6与Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 项目支持支付宝支付(暂不支持微信支付),支持手机短信验证码注册, ...
- 前端学习(1989)vue之电商管理系统电商系统之渲染商品列表数据
目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...
- 前端学习(1988)vue之电商管理系统电商系统之获取商品列表
目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...
- 前端学习(1987)vue之电商管理系统电商系统之通过路由加载商品列表
目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...
最新文章
- 深度学习之核心要素:输入输出、目标函数、前向传播、后向传播、学习率、梯度下降
- Metasploit编码模块技巧
- 哈尔滨工业大学计算机培养计划,哈工大计算机科学与技术专业本科生培养方案.docx...
- 今日代码(200714)--主客观求指标权重及求城市得分
- leetcode60.第k个排列java题解
- c语言程序设计语言描述,C语言程序设计题目描述(详).txt
- system volume information是什么文件_如何扩展Unity URP的后处理Volume组件
- 解决MFC 窗口创建时 争夺焦点的问题
- 大数据可视化搭建存在哪些难题
- 毕设开题报告重要内容
- 程序员必备之电脑护眼模式设置
- 如何查看网站的访问量?查看访问量的二个主要方法【站长之家的SEO综合查询工具】
- UnFlow:具有双向普查损失的光流的无监督学习
- 【实用算法教学】——Apriori算法,教你使用亲和性分析方法推荐电影
- 转发-【分享】思科无线控制器HA模式升级
- Oracle转PostgreSQL之start with / connect by
- 机械加工工艺装备基本术语
- node.js使用http.createServer搭建简单服务
- 斯坦福大学深度学习开言
- 阅读记录(2017年1月)
热门文章
- wampserver启动报错:1 of 2 services running - 解决篇
- 用手刻出计算机系统,一种计算机模拟手工雕刻制版的方法
- git head指向老版本_Git最全总结
- 百度SEO未注册域名批量检测查询
- java马克思手稿_java 循环嵌套解决一元,二元,三元方程(增长率,鸡兔同笼,马克思手稿)...
- js将9999以内的值的个位改为0
- Mybatis-Plus查询中排除标识字段
- .NET(C#)基于Socket编程实现平行主机之间网络通讯有图片传输的Demo演示
- C#上传文件的一个实现
- Linux: sysv-rc-conf管理Ubuntu server开机启动服务