PHP - Redis队列解决执行速度问题

                 今天优化了一个用Redis队列异步解决了提交数据反映时间慢点问题 整理下和大家分享下 一是怕自己忘了 二是希望可以帮助到你们 或多或少提供些思想也是好的...

  先看下图,在没有优化之前一起提交五套房源的速度是这个样子的

PHP - Redis队列解决执行速度问题_第1张图片

<注 上图是charles的截图 响应时间6.86秒>

第一反应是sql的问题  然后把所有的sql 输出到文本上 发现有查询是带*号的sql语句 还有就是夹在循环里的sql 改掉了里面的循环体和sql 当时的sql如下图

PHP - Redis队列解决执行速度问题_第2张图片

把当时的循环逻辑进行优化 但是发现还没有解决 当时就想是不是在哪里发生了问题 注释掉了一些sql和循环 速度还是那么慢 后来发现每次提交代码时都在发送短信和邮件 当时我的第一想法是把发送的curl设置成已微妙为单位的发送和请求 中途遇到了问题是每次没有执行发送邮件 当时真是一阵草泥马呼啸而过....

脚本执行慢的原因是 每次发送邮件要等返回值!!! 这问题就变得好多了 使用Redis把每次发送邮件请求lpush到Redis队列中 然后在定时脚本rpop消费 这样执行时不用等待邮件是否发送成功 记录相应的日志 问题得到解决 成就感满格...

PHP - Redis队列解决执行速度问题_第3张图片

Redis 写入队列和消费队列的脚本代码 以及日志记录 <上次写的脚本日志利总非常不满意 所以之后都写的多想想 每一步执行都要记录了 谢谢利总>

PHP - Redis队列解决执行速度问题_第4张图片


PHP - Redis队列解决执行速度问题_第5张图片

最后执行速度终于到了185ms 大写的满足

PHP - Redis队列解决执行速度问题_第6张图片







                  

你可能感兴趣的:(PHP,Linux,Web)