场景:模拟验证码发送。仅做代码演示。
(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并向接口提交手机号进行测试。
PHP的session文件夹默认保存在同一个文件,随着访客的增多,访问的速度会非常慢,例如部分管理系统后台每天登陆1000次,1个月就创建了30000个session文件,一年后是多少?假设这个系统的用户是上万人呢?方法1:每个网站使用自己的session文件夹,代码如下:<?php $pat...
header() 函数向客户端发送原始的 HTTP 报头。(官方解释)通俗的讲header函数将参数中的字符串作为服务端的响应头来返回给客户端。什么是服务端的响应头?打开谷歌浏览器看看network中的请求response header信息即可。更多的参数百度response header即可浏览器...
第一步:服务端文件<?php $wsdlfile='webservice.wsdl'; ini_set('soap.wsdl_cache_enabled','0'); //关闭WSDL缓存 //001...
源码:特别适用于微信支付中通知微信支付网关function array2xml($arr, $level = 1) { $s = $level == 1 ? "<xml&g...
如果想在windows中执行php,并且让php脚本在后台运行,可以用下面的cmd命令start /b php D:\wwwroot\default\demo1\run.php例如上面的命令意思后台运行run.php,如果想用php编写异步代码: ...
面试中PHP面试官会问调用一个不存在的方法,如何知道是哪个文件哪行调用的?假设方法是getWorkLoad()回答1:开启PHP错误输出,PHP会输出Fatal error: Call to undefined function getWorkLoad() in D:\wwwroot\thinkpa...