博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP和MySQL实现消息队列
阅读量:7098 次
发布时间:2019-06-28

本文共 873 字,大约阅读时间需要 2 分钟。

hot3.png

最近遇到一个批量发送短信的需求,短信接口是第三方提供的。刚开始想到,获取到手机号之后,循环调用接口发送不就可以了吗?

但很快发现问题:当短信数量很大时,不仅耗时,而且成功率很低。

于是想到,用PHP和MySQL实现一个消息队列,一条一条的发送短信。下面介绍具体的实现方法:

首先,建立一个数据表sms,包含以下字段:

id,phone, //手机号content //短信内容

将需要发送的短信和手机号存入sms表中。

接下来,需要用PHP实现一个定时器,定时读取一条记录,并发送短信:

getFirstRecord(); //获取数据表第一条记录    if(!$item){        //如果队列中没有数据,则结束定时器        break;    }    $res = $sms->send($item['phone'],$item['content']); //发送短信    if($res){        $db->deleteFristRecord(); //删除发送成功的记录        echo $item['phone'].'发送成功';    }else{        echo $item['phone'].'发送失败,稍后继续尝试';    }    sleep(10); //每隔十秒循环一次            }echo '发送完毕!';?>

将代码保存为timer_sms.php,打开命令行,执行定时器:

php timer_sms.php

好了,php定时器将会根据设定的时间间隔(这里设的是10秒),自动完成发送短信的任务。任务完成后将自动退出定时器,不再占用服务器资源。

根据我的测试,PHP定时器占用资源并不多,不会对服务器造成压力。而且是异步访问数据库,也不会影响数据库的运行。

这种方式的优点是:

1、后台运行,前台无需等待

2、成功率高,失败的记录会自动重发,直到成功

转载于:https://my.oschina.net/crazymus/blog/479741

你可能感兴趣的文章
hotmail邮件中背景图片不显示的解决办法
查看>>
实习小白::(转) Cocos2d-x 3.0 开发(十四)使用UIScrollView 实现大小不同物品拖动展示...
查看>>
11.SpringMVC注解式开发-处理器方法的返回值
查看>>
Go 标准库 —— sync.Mutex 互斥锁
查看>>
Virtualbox-CentOS网络配置
查看>>
spring中方法级验证参数
查看>>
grpc测试
查看>>
eclipse快捷键整理
查看>>
Android studio 3.0安装MUMU模拟器
查看>>
selenium操作滚动条方法
查看>>
3、输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
查看>>
MyISAM InnoDB 区别
查看>>
时钟巡回
查看>>
看博客学学Android(六)
查看>>
Transformation functionality for the String class
查看>>
The String class's judging function
查看>>
网页制作-表单元素
查看>>
淡入淡出js
查看>>
初识Android
查看>>
一道算法题
查看>>