PHP+MySQL实现消息队列的方法分析
发布:smiling 来源: PHP粉丝网 添加日期:2021-09-17 10:01:02 浏览: 评论:0
这篇文章主要介绍了PHP+MySQL实现消息队列的方法,结合实例形式分析了php+mysql构建消息队列并使用定时器间歇发送信息相关操作技巧,需要的朋友可以参考下。
本文实例讲述了PHP+MySQL实现消息队列的方法,分享给大家供大家参考,具体如下:
最近遇到一个批量发送短信的需求,短信接口是第三方提供的,刚开始想到,获取到手机号之后,循环调用接口发送不就可以了吗?
但很快发现问题:当短信数量很大时,不仅耗时,而且成功率很低。
于是想到,用PHP和MySQL实现一个消息队列,一条一条的发送短信,下面介绍具体的实现方法:
首先,建立一个数据表sms,包含以下字段:
id,
phone, //手机号
content //短信内容
将需要发送的短信和手机号存入sms表中。
接下来,需要用PHP实现一个定时器,定时读取一条记录,并发送短信:
- <?php
- $db = new Db();
- $sms = new Sms();
- while(true){
- $item = $db->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、成功率高,失败的记录会自动重发,直到成功
Tags: PHP+MySQL消息队列
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)