前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >某业务付费统计脚本问题排查

某业务付费统计脚本问题排查

作者头像
唯一Chat
发布2019-09-29 15:43:10
5100
发布2019-09-29 15:43:10
举报
文章被收录于专栏:陶士涵的菜地

现象:产品反馈未收到每周五的VIP邮箱付费统计邮件

1. 这个统计脚本我从未经手过,因此不知道逻辑是什么,也不知道代码在哪里.通过查看邮件源文件中的来源IP,找到了发出邮件所在的服务器,信头中有类似这样的来源IP X-Originating-IP: [xx.xx.xx.86]

2.登陆服务器后,查看crontab的定时规则,找到定时规则是0 0 * * * /bin/sh /xxx/feeUser.sh.每天都会执行一次feeUser.sh的脚本.通过cron.log可以看到该脚本已经执行过了

3.脚本中的逻辑是,每天判断今天的日志文件是否存在,如果不存在就执行一个php脚本,把该脚本的输出重定向到这个日志文件中. 判断如果是周五,就调用php脚本发送一封通知邮件,邮件的内容是对每天日志文件的wc -l行数统计.

4.今天是周五但是邮件没有发出,说明根本就没有执行到发送邮件的逻辑.在前面的统计今天用户付费情况时就已经断掉了.

5.查看php.ini的配置文件,看到没有开启log_errors,也没有指定error_log的位置,所以没法通过php的日志看到发生了什么错误

6.此脚本是14年左右开始运行的,时间也比较久了.在研究php代码的逻辑后发现,在查询数据库的时候,先查出第一个数据库的某表信息后,循环查询另一个数据库的另一张表,在这个循环的过程中,连接数据库的逻辑放在了循环块里面,猜测可能因为连接过多,被数据库拒绝后读取失败吧.

7.里面还有处逻辑挺有想法,读取第一张表的时候,每次只查询10000条,然后再从新连接数据库new PDO对象,估计也是为了防止执行时间太长连接断掉. 每天php脚本把用户查询出来后,重定向到比如2019-9-20-user.log,周五在统计每天的日志行数发送给产品,这样就可以如果产品需要具体用户时也可以留着这个结果

8.先把连接数据库逻辑挪出来,补齐了强两天断掉的数据,把错误日志打开暂时先观察观察

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-09-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档