场景:模拟验证码发送。仅做代码演示。
(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并向接口提交手机号进行测试。
上家公司开发医院挂号系统,系统采用GBK编码。ajax发送的中文用户名让PHP保存为cookie出现乱码的解决方案。1.Javascript变量var user=document.getElementById('user').innerText; user=escape(u...
<?php //设置Cookies数组 setcookie('Datatype[a]', '1'); setcookie('Datatype[b]', '2'); set...
通过经纬度转换为城市名称,并获得城市的编号,通常在全国类型的商城中比较通用。//经纬度转城市名称(返回城市id,城市名称) //$ak开发密钥,$lat纬度,$lng经度,$type返回数据类型 public function getCityName($ak,$lat,$lng)...
通过http推送消息给socket,socket服务再向客户端推送<?php /* * Socket推送 * 请用守护进程方式启动php msgservice.php & (socket只...
应用场景:PHP模拟购买,商品数量大于0才能购买常见代码:<?php //连接数据库 $con=mysqli_connect("localhost","ihuohuo","927464cy","ihuohuo");...
php arrayaccess 官方的说法是让你能以数组的形式访问对象,对于这种php内置接口一直不太明白有什么用,坚持多看文章,终于理解,特来分享,思路不同,更易于理解。(1).创建一个学生类,并且实现arrayaccess 接口。<?php class studen...