加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP+MySQL实 现消息队列的方法分析

发布时间:2023-02-16 12:57:59 所属栏目:PHP教程 来源:
导读:  本篇章节讲解PHP+MySQL实现消息队列的方法。分享给大家供大家参考,具体如下:

  最近遇到一个批量发送短信的需求,短信接口是第三方提供的。刚开始想到,获取到手机号之后,循环调用接口发送不就可以了吗
  本篇章节讲解PHP+MySQL实现消息队列的方法。分享给大家供大家参考,具体如下:
 
  最近遇到一个批量发送短信的需求,短信接口是第三方提供的。刚开始想到,获取到手机号之后,循环调用接口发送不就可以了吗?
 
  但很快发现问题:当短信数量很大时,不仅耗时,而且成功率很低。
 
  于是想到,用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定时器将会根据设定的时间间隔(这里设的是10秒),自动完成发送短信的任务。任务完成后将自动退出定时器,不再占用服务器资源。
 
  根据我的测试,PHP定时器占用资源并不多,不会对服务器造成压力。而且是异步访问数据库,也不会影响数据库的运行。
 
  这种方式的优点是:
  1、后台运行,前台无需等待
 
  2、成功率高,失败的记录会自动重发,直到成功
 

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!