php脚本定时更新商品列表

29 篇文章 0 订阅
2 篇文章 0 订阅

电商项目中为了提高抗并发能力,需要对商品列表做缓存,以下是更新缓存用的脚本:

//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定时任务脚本,你需要完成以下步骤: 1. 编写PHP脚本:首先,你需要编写一个PHP脚本,用于执行你想要的任务,例如生成报告、发送邮件或者更新数据库等。 2. 安装计划任务管理器:你需要安装一个计划任务管理器,例如cronjob或者Task Scheduler,来运行定时任务。这些管理器会在指定的时间或时间间隔内自动运行你的PHP脚本。 3. 配置计划任务:在计划任务管理器中,你需要配置一个计划任务,指定你的PHP脚本在何时运行。你可以设置任务的运行时间、运行频率和运行方式等信息。 下面是一个在Linux系统上配置PHP定时任务的例子: 1. 编写PHP脚本:假设你有一个名为report.phpPHP脚本,用于生成每天的报告。 2. 安装cronjob:在终端中输入以下命令安装cronjob: ``` sudo apt-get install cron ``` 3. 编辑cronjob文件:在终端中输入以下命令编辑cronjob文件: ``` crontab -e ``` 4. 配置计划任务:在cronjob文件中添加以下内容,表示在每天的早上6点运行report.php脚本: ``` 0 6 * * * /usr/bin/php /path/to/report.php ``` 其中,“0 6 * * *”表示任务运行时间,即每天早上6点,后面的“/usr/bin/php /path/to/report.php”表示要运行的PHP脚本路径。 5. 保存文件:保存cronjob文件并退出编辑器。 现在,你已经成功配置了一个定时任务,每天早上6点,系统会自动运行report.php脚本并生成报告。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲敲代码、落灯花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值