Heim > Fragen und Antworten > Hauptteil
PHP 由于客户比较多,发送短信类型有很多种,想用短信队列来解决发送担心,不知道如何下手???
PHPz2017-04-11 10:03:52
简单点用redis lpush lpop
$redis->lpush('queue',json_encode($data));
开一个进程lpop消费就可以了,你可以先本地测试下while($redis->lpop('queue'))
大家讲道理2017-04-11 10:03:52
一个生产者,一个消费者进程。
消费的任务就是发送短信。
你可以把任务放到redis的list类型中,再开一个常住进程监控redis,有任务就拿出来消费。
伊谢尔伦2017-04-11 10:03:52
既然选择用队列,方式有很多
1.很多php框架都有队列的功能 laravel phalcon等
2.就是redis list数据类型 ,一边把它推入队列中,另一边把任务从队列里拿出来,这只是一个中转站,当然你也可以存到数据库里,效率当然是redis高一些
黄舟2017-04-11 10:03:52
每次用户端请求发短信, 你直接把你直接把这个方法丢到队列里面去, 然后在服务器里面在启动一个php守护进程,比如每隔1s中扫队列里面,如果有数据,就去执行这个方法, ,, 如果你不放心, 你就在写一个shell脚本, 去每隔10分钟去检测这个队列有没有挂........
怪我咯2017-04-11 10:03:52
建议轻量的用beanstalks,Redis的pub/sub 在c/s中断时,将丢数据,不是MQ。rabbitmq之类的有点重,看是否需有那么大量。