动静行列:在动静的传输进程中生存动静的容器。
动静行列打点器在将动静从它的源中继到它的方针时充傍边间人。行列的主要目标是提供路由并担保动静的通报;假如发送动静时吸收者不行用,动静行列会保存动静,直到可以乐成地通报它。
如图所示:
在不利用动静行列的环境下,用户的请求数据直接写入数据库,再高并发的环境下,会对数据库造成巨的压力,同时也使得响应延迟加剧。在利用动静行列后,用户请求的数据发送给动静行列后当即返回,再由动静行列的消费者历程(凡是环境下,该历程独立陈设在专门的处事器集群上)从动静行列中获取数据,异步写入数据库。由于动静行列处事器处理惩罚速度远大于数据库,因此用户的响应延迟可获得有效改进。
尤其是在淘宝搞“双十一”,“春节特卖”等勾那时,利用动静行列有很好的削峰浸染--------
即通过异步处理惩罚,将短时间高并发发生的事务动静存储在动静行列中,从而削平岑岭期的并发事务。所以在一些电子商务网站促销勾当中,公道利用动静行列,可有效抵制促销勾当刚开始大量涌入的订单对系统造成的攻击。
需要留意的是,由于数据写入动静行列后当即返回给用户数据在后续的业务校验、写数据库等操纵大概失败,因此在利用动静行罗列办业务异步处理惩罚后,需要适当修改业务流程举办共同,如订单提交后,订单数据写入动静行列,不能当即返回用户订单提交乐成,需要在动静行列的订单消费者历程真正处理惩罚完该订单,甚至商品出库后,再通过电子邮件或SMS动静通知用户订单乐成,以免生意业务纠纷。
最近碰着一个批量发送短信的需求,短信接口是第三方提供的。刚开始想到,获取得手机号之后,轮回挪用接口发送不就可以了吗?
但很快发明问题:当短信数量很大时,不只耗时,并且乐成率很低。
于是想到,用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+MySQL动静行列深入领略的文章就先容到这了,更多相关PHP+MySQL动静行列内容请搜索剧本之家以前的文章或继承欣赏下面的相关文章但愿各人今后多多支持剧本之家!
您大概感乐趣的文章: