• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
123457025 显示全部楼层 发表于 2021-10-25 20:24:55 |阅读模式 打印 上一主题 下一主题
本文实例讲述了PHP+MySQL实现消息队列的方法。分享给各人供各人参考,具体如下:
最近碰到一个批量发送短信的需求,短信接口是第三方提供的。刚开始想到,获取到手机号之后,循环调用接口发送不就可以了吗?
但很快发现题目:当短信数量很大时,不仅耗时,而且乐成率很低。
于是想到,用PHP和MySQL实现一个消息队列,一条一条的发送短信。下面介绍具体的实现方法:
起首,建立一个数据表sms,包罗以下字段:
  1. id,
  2. phone, //手机号
  3. content //短信内容
复制代码
将必要发送的短信和手机号存入sms表中。
接下来,必要用PHP实现一个定时器,定时读取一条记录,并发送短信:
  1. <?php
  2. $db = new Db();
  3. $sms = new Sms();
  4. while(true){
  5.   $item = $db->getFirstRecord(); //获取数据表第一条记录
  6.   if(!$item){
  7.     //如果队列中没有数据,则结束定时器
  8.     break;
  9.   }
  10.   $res = $sms->send($item['phone'],$item['content']); //发送短信
  11.   if($res){
  12.     $db->deleteFristRecord(); //删除发送成功的记录
  13.     echo $item['phone'].'发送成功';
  14.   }else{
  15.     echo $item['phone'].'发送失败,稍后继续尝试';
  16.   }
  17.   sleep(10); //每隔十秒循环一次
  18. }
  19. echo '发送完毕!';
  20. ?>
复制代码
将代码保存为timer_sms.php,打开下令行,执行定时器:
  1. php timer_sms.php
复制代码
好了,php定时器将会根据设定的时间间隔(这里设的是10秒),自动完成发送短信的任务。任务完成后将自动退出定时器,不再占用服务器资源。
根据我的测试,PHP定时器占用资源并不多,不会对服务器造成压力。而且是异步访问数据库,也不会影响数据库的运行。
这种方式的优点是:
1、背景运行,前台无需等候
2、乐成率高,失败的记录会自动重发,直到乐成
更多关于PHP相关内容感爱好的读者可查看本站专题:《php+mysql数据库操纵入门教程》、《php+mysqli数据库步伐计划技巧总结》、《php面向对象步伐计划入门教程》、《PHP数组(Array)操纵技巧大全》、《php字符串(string)用法总结》及《php常见数据库操纵技巧汇总》
盼望本文所述对各人PHP步伐计划有所资助。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作