当前位置:首页 > PHP > 正文内容

EasyTask使用redis队列教程

高老师6年前 (2020-07-07)PHP3660

场景:模拟验证码发送。仅做代码演示。

(1).创建一个验证码发送接口sendCaptcha

/**
 * 发送验证码
 */
public function sendCaptcha()
{
    //外部参数(获取手机号)
    $mobile = $_REQUEST['mobile'] ?? 0;
    if (!$mobile)
    {
        exit(json_encode(['code' => -1, 'msg' => '手机号码不得为空'], 256));
    }

    //生成短信验证码(随机数4位)
    $captcha = rand(1111, 9999);

    //组装队列数据Json
    $send_data = [
        'mobile' => $mobile,
        'captcha' => $captcha,
    ];

    //连接本地的Redis 服务
    $redis = new \Redis();
    $redis->connect('127.0.0.1', 6379);

    //向Redis的send_captcha队列投递数据
    $isPush = $redis->lPush('send_captcha', json_encode($send_data));
    if (!$isPush)
    {
        exit(json_encode(['code' => -1, 'msg' => '验证码发送失败'], 256));
    }

    //输出发送成功
    exit(json_encode(['code' => 0, 'msg' => '验证码发送成功'], 256));
}

(2).EasyTask中的代码如下

// 添加执行定时器
$time = 1;
$task->addFunc(function () {

    //连接本地的Redis 服务
    $redis = new \Redis();
    $redis->connect('127.0.0.1', 6379);

    //提取队列中的数据
    $data = $redis->rPop('send_captcha');
    if ($data)
    {
        //提取数据中的手机号和验证码
        $data = json_decode($data, true);
        $mobile = $data['mobile'];
        $captcha = $data['captcha'];

        //进行发送,此处为伪代码
        //sendCode($mobile,$captcha);

        //输出日志
        echo "向{$mobile}发送验证码{$captcha}成功" . PHP_EOL;
    }
}, 'send_captcha_timer', $time, 1);

(3).启动EasyTask并向接口提交手机号进行测试。

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/141.html

分享给朋友:

“EasyTask使用redis队列教程” 的相关文章

PHP函数赋值给一个变量的另类用法

PHP函数赋值给一个变量的另类用法

<?php   function  go($str) { echo'I\'m '.$str;  }   $goto='go';   $goto('gaojiufeng'...

 php调用.net的dll文件,php调用.net dll

php调用.net的dll文件,php调用.net dll

本篇文章不是讲解如何用.net开发自己的dll然后PHP通过com调用。主要记录PHP官方支持的DOTNET 基本语法如下:$obj = new DOTNET("assembly", "classname")a...

 php xml字符串转数组,phpxml转数组,php 将xml转换成数组

php xml字符串转数组,phpxml转数组,php 将xml转换成数组

001源码:/*  * $xml_str是xml字符串  */ function  xmltoarray($xml_str) { //禁止XML实体扩展攻击 libxml_disable_entity_loader(true); //拒绝包含...

 php max input vars,max input vars限制,max input vars 设置

php max input vars,max input vars限制,max input vars 设置

在一个正式项目中操作人员提交239个产品信息进行保存,但是系统却提示没有提交239个产品,于是开启错误信息,显示如下:Warning: Unknown: Input variables exceeded 1000. To incr...

xmlrpc  php,php通过xml-rpc进行通信

xmlrpc php,php通过xml-rpc进行通信

xmlrpc协议是通过http请求xml数据进行通信。webservice中和它相同的是soap。soap调用的确很简单,但是创建wsdl太繁琐,效率低下。xmlrpc很好的解决这个问题。(1).创建xmlrpc服务端(求和函数api)function getSum($method,$ar...

PHP getenv函数和putenv函数的学习

PHP getenv函数和putenv函数的学习

(1).在PHP中可以查看的环境变量包括: (1.1).电脑环境变量 (2.1).服务器环境变量(2).getenv()函数获取一个环境变量的值.参数1是环境变量的key,参数2值为true的时候仅从你的电脑环境变量中查找,参数2值为false会从两种变量中全部查询//获取我电脑登录的用户名,输出A...