这篇文章主要介绍的内容是关于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>&1 root 是执行脚本的用户 /usr/local/php/bin/php php脚本解释器,如果不写全路径的话会报错 >/dev/null 2>&1 忽略日志输出
相关推荐:
以上是php脚本定时更新商品列表的详细内容。更多信息请关注PHP中文网其他相关文章!