用php脚本,你如何定时更新商品列表

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

https://mp.weixin.qq.com/s/36FG76HMMMTzBBpH71xPvg

 

//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 忽略日志输出

 

附crontab规则详细实例

1、每天6:00执行

0 6 * * * root /home/mvp/osyunwei.sh

2、每周六凌晨4:00执行

0 4 * * 6 root /home/mvp/osyunwei.sh

3、每周六凌晨4:05执行

5 4 * * 6 root /home/mvp/osyunwei.sh 

4、每周六凌晨4:15执行

15 4 * * 6 root /home/mvp/osyunwei.sh

5、每周六凌晨4:25执行

25 4 * * 6 root /home/mvp/osyunwei.sh

6、每周六凌晨4:35执行

35 4 * * 6 root /home/mvp/osyunwei.sh

7、每周六凌晨5:00执行

5 * * 6 root /home/mvp/osyunwei.sh

8、每天8:40执行

40 8 * * * root /home/mvp/osyunwei.sh

9、每天8:30执行

30 8 * * * root /home/mvp/osyunwei.sh


10、每周一到周五的11:41开始,每隔10分钟执行一次    #值得借鉴

41,51 11 * * 1-5   root /home/mvp/osyunwei.sh

或者

1-59/10 12-23 * * 1-5   root /home/mvp/osyunwei.sh

11、在每天的10:31开始,每隔2小时重复一次

31 10-23/2 * * * root   /home/mvp/osyunwei.sh

12、每天15:00执行

0 15 * * *  root /home/mvp/osyunwei.sh

13、每天的10:30开始,每隔2小时重复一次

30 10-23/2 * * * root  /home/mvp/osyunwei.sh

14、每天15:30执行

30 15 * * *  root /home/mvp/osyunwei.sh

15、每天17:50执行

50 17 * * *  root /home/mvp/osyunwei.sh

16、每天8:00执行

0 8 * * *  root  /home/mvp/osyunwei.sh

17、每天18:00执行

0 18 * * *  root  /home/mvp/osyunwei.sh

18、每天8:30执行

30 8 * * *  root  /home/mvp/osyunwei.sh

19、每天20:30

30 20 * * *  root /home/mvp/osyunwei.sh

20、每周一到周五2:00

0 2 * * 1-5 root /home/mvp/osyunwei.sh

21、每周一到周五9:30

30 9 * * 1-5 root /home/mvp/osyunwei.sh

22、每周一到周五8:00,每周一到周五9:00

0 8,9 * * 1-5  root /home/mvp/osyunwei.sh

23、每天23:59

59 23 * * *  root  /home/mvp/osyunwei.sh

24、每周六23:59

59 23 * * 6  root    /home/mvp/osyunwei.sh

25、每天0:30

30 0 * * *  root  /home/mvp/osyunwei.sh

26、每周一到周五9:25到11:35之间、13:00到15:00之间,每隔10分钟运行一次

分区段写值得借鉴

25,35,45,55  9 * * 1-5  root   /home/mvp/osyunwei.sh

5-59/10  10 * * 1-5  root   /home/mvp/osyunwei.sh

5,15,25,35  11 * * 1-5  root   /home/mvp/osyunwei.sh

*/10  13-15 * * 1-5  root   /home/mvp/osyunwei.sh

27、每周一到周五8:30、8:50、9:30、10:00、10:30、11:00、11:30、13:30、14:00、14:30、5:00分别执行一次

30,50 8 * * 1-5  root  /home/mvp/osyunwei.sh

30 9 * * 1-5  root  /home/mvp/osyunwei.sh

*/30 10-11 * * 1-5  root  /home/mvp/osyunwei.sh

30 13 * * 1-5  root  /home/mvp/osyunwei.sh

0,30 14-15 * * 1-5  root  /home/mvp/osyunwei.sh

28、每天23:50执行

50 23 * * *  root  /home/mvp/osyunwei.sh

29、每天10:00、16:00执行

0 10,16 * * *  root /home/mvp/osyunwei.sh

30、每天5:30执行

30 5 * * *  root  /home/mvp/osyunwei.sh

31、每周一到周五9:30执行

30 9 * * 1-5  root  /home/mvp/osyunwei.sh

32、每周一到周五13:00执行

0 13 * * 1-5  root  /home/mvp/osyunwei.sh

33、每天7:51执行

51 7 * * *  root /home/mvp/osyunwei.sh

34、每天7:53、12:40分别执行一次

53 7 * * *  root /home/mvp/osyunwei.sh

40 12 * * *  root /home/mvp/osyunwei.sh

35、每天7:55执行

55 7 * * *  root  /home/mvp/osyunwei.sh

36、每天8:10、16:00、20:00分别执行一次

10 8 * * *  root  /home/mvp/osyunwei.sh

0 16 * * *  root  /home/mvp/osyunwei.sh

0 20 * * *  root  /home/mvp/osyunwei.sh

37、每天7:57、8:00分别执行一次

57 7 * * *  root  /home/mvp/osyunwei.sh

0 8 * * *  root  /home/mvp/osyunwei.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值