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

 更新时间:2018年05月09日 10:01:11   作者:战神悟空  
这篇文章主要介绍了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、成功率高,失败的记录会自动重发,直到成功

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • PHP利用APC模块实现大文件上传进度条的方法

    PHP利用APC模块实现大文件上传进度条的方法

    这篇文章主要介绍了PHP利用APC模块实现大文件上传进度条的方法,并分享了相关配置说明,感兴趣的朋友可以学习借鉴。
    2015-10-10
  • php和nginx交互实例讲解

    php和nginx交互实例讲解

    在本篇文章中小编给大家分享的是关于php和nginx如何交互的实例以及相关知识点,有需要的朋友们学习下。
    2019-09-09
  • PHP中Header使用的HTTP协议及常用方法小结

    PHP中Header使用的HTTP协议及常用方法小结

    这篇文章主要介绍了PHP中Header使用的HTTP协议及常用方法,包含了各种错误编码类型及其含义,需要的朋友可以参考下
    2014-11-11
  • PHP在线调试执行的实现方法(附demo源码)

    PHP在线调试执行的实现方法(附demo源码)

    这篇文章主要介绍了PHP在线调试执行的实现方法,实例分析了PHP实现在线调试运行的原理,步骤与具体实现代码,并附带demo源码供读者下载参考,需要的朋友可以参考下
    2016-04-04
  • 关于PHP5 Session生命周期介绍

    关于PHP5 Session生命周期介绍

    PHP5有很多值得学习的地方,这里我们主要介绍PHP5 Session的使用,Session 是如何来判断客户端用户的呢?
    2010-03-03
  • php 验证码(倾斜,正弦干扰线,黏贴,旋转)

    php 验证码(倾斜,正弦干扰线,黏贴,旋转)

    本篇文章是对php 验证码(倾斜,正弦干扰线,黏贴,旋转)进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php实现监控varnish缓存服务器的状态

    php实现监控varnish缓存服务器的状态

    这篇文章主要介绍了php实现监控varnish缓存服务器的状态,Varnish是一款高性能的开源HTTP加速器,可以替代Squid、Nginx等服务器,需要的朋友可以参考下
    2014-12-12
  • PHP数组函数知识汇总

    PHP数组函数知识汇总

    什么是数组?数组就是被命名的用来存储一系列数值的地方。这篇文章主要汇总了PHP数组函数最基础的知识点,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • smarty巧妙处理iframe中内容页的代码

    smarty巧妙处理iframe中内容页的代码

    最近在用smarty做一个小项目,发现smarty中模板引擎挺不错,让前端和后端真正的分离
    2012-03-03
  • PHP+JS实现批量删除数据功能示例

    PHP+JS实现批量删除数据功能示例

    这篇文章主要介绍了PHP+JS实现批量删除数据功能,结合实例形式分析了php结合js控制页面元素的选中与提交,以及php操作mysql实现批量删除功能的相关实现技巧,末尾还附带了一个php数据库操作类,需要的朋友可以参考下
    2017-11-11

最新评论