虚位以待(AD)
虚位以待(AD)
首页 > 网络编程 > PHP编程 > PHP+MySQL实现消息队列的方法分析

PHP+MySQL实现消息队列的方法分析
类别:PHP编程   作者:码皇   来源:互联网   点击:

这篇文章主要介绍了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程序设计有所帮助。

您可能感兴趣的文章:

  • mysql 队列 实现并发读
  • PHP的Laravel框架中使用消息队列queue及异步队列的方法
  • PHP+memcache实现消息队列案例分享
  • PHP下操作Linux消息队列完成进程间通信的方法
  • PHP消息队列用法实例分析
  • phpredis提高消息队列的实时性方法(推荐)
  • PHP基于Redis消息队列实现发布微博的方法
  • PHP使用redis消息队列发布微博的方法示例
  • PHP+Redis 消息队列 实现高并发下注册人数统计的实例
  • php+redis消息队列实现抢购功能
相关热词搜索: PHP MySQL 消息队列