Generic placeholder image
闲敲代码、落灯花
What's past is prologue

联系邮箱:email@hezehua.net


联系QQ:1907330840

座右铭

保持热情,持续学习,每日精进

php脚本定时更新商品列表

php脚本定时更新商品列表

本文与作者在csdn上的博文【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 忽略日志输出
猜你喜欢
使用supervisor使Laravel的queue保持后台常驻
阅读 527

1、array_column — 返回数组中指定的一列 $result = array_column([["aa"=>1,&...

Laravel初探——安装
阅读 438

安装Composer 1、curl -sS https://getcomposer.org/installer | php 2、mv composer.phar /usr/local/bin/composer 3、composer install 安装Laravel 1、compos...

PDO连接MySql数据库
阅读 468

PDO:PHP数据对象,是一个PHP扩展,定义了了访问数据库的统一接口。 PDO提供了一个数据库访问抽象层,通过PDO可以用相同的函数访问不同的数据库。 PDO连接数据库的实例: <?php $dbms='mysql'; //数据库类型 $hos...

laravel 使用事件系统统计浏览量
阅读 666

最近有一个商城项目中有统计商品点击量和艺术家访问量的需求,但又不想改动太多原来的代码,而点击与访问这两个动作是有明确触发点的,正好可以用laravel中的事件系统来做,在点击和访问对应的函数中产生这俩事件,监视器获取到之后,再将记录保存到数据库中,并更新计数。 1、在 app\Prov...

编译安装LNMP全程实录
阅读 337

此次是在CentOs 7.4上进行安装配置,先把编译环境配置好: yum -y install gcc automake autoconf libtool make yum install gcc gcc-c++ 准备一些软件的安装包: 安装包 地址 用途 ...

Dockerfile 中 配置安装 php 扩展
阅读 854

以下配置实现了 在docker环境中安装scwl中文分词的php扩展: # scwl RUN curl 'http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2' -o scws-1.2.3.tar.bz2 \ &am...

一个在PDO数据绑定上踩的坑
阅读 342

不经常用PDO,一直不知道数据绑定的时候的一个细节——不可使用同一个变量名为不同的符号进行数据绑定。 因为这样的话会导致在执行execute()时,不同符号都绑定了同一个值——最后一个赋予这个变量名的值。 比如: $letters = array('a','b','c'); foreach(...

面试小结——01
阅读 400

1、相关知识点: 1、文件基本操作 (1)、file_exists —检测文件是否存在 (2)basename — 返回路径中的文件名部分 (3)dirname — 返回路径中的目录部分 (4)pathinfo — 返回文件路径的信息 (5)fopen — 打开文件或者 UR (...