• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php 用 redis做队列 运行过程是什么样的?

php 搞代码 3年前 (2022-01-23) 11次浏览 已收录 0个评论
文章目录[隐藏]

比如群发1000封邮件,或者同时有1000个用户一人一个发邮件的请求

先用1个或多个php脚本把 1000封邮件的信息存储到redis

然后用另一个php脚本 循环从redis中每次取20条出来 执行发送邮件的函数

那问题来了,那这个取数据脚本是不是一直要在后台跑呢? 而且就它一个线程,效率高吗?

我是不是理解错了?

回复讨论(解决方案)

在哪里跑都行,按你业本@文来源[email protected]搞@^&代*@码网(搞代gaodaima码务的需要
只要你处理一条就删一条,多少的进(线)程同时跑都没关系

就是排队,先来先服务。后来的等着。

你多少个来都一样,按时间排队,如果并发,它系统都会按入队顺序排好的。

php运行一个脚本是一个线程吧?

比如1000个用户一人一个发邮件的请求,如果每个请求都开启一个取数据线程 执行发邮件函数,那队列就没有意义了,相当于直接运行发邮件函数了

怎么让如每20个用户就开启一个线程取数据呢?

就是排队,先来先服务。后来的等着。

你多少个来都一样,按时间排队,如果并发,它系统都会按入队顺序排好的。

排队我懂。
我不理解的是取出数据后,到底是交给谁执行任务(如发邮件),是交给一个线程,还是可以同时交给多个线程,这里边到底是怎么操作的,一个线程是不是会很慢

如果你出队时多线程的,就可以同时处理多个入队的数据了。

或者入队时定义多几个队列,出队时就可以并发执行了。

邮件发送的快慢由很多因素决定,你实际能操控的是你的网卡的吞吐量(当然还有带宽的制约)
只要没超出他的上限,开多少个线程都无所谓
CPU(核) 在任何时刻都只会为一个进(线)程服务,如果你的程序在运行时没有停顿(没有IO请求),那么多线程和单线程并没有区别

你实际需要的是如何调度队列,使之尽快的空下来
1、你需要有一个后台进程,不时的处理队列里的数据
2、你可以在每当用户发来请求时,除了完成请求的工作外,在启动若干个进(线)程来处理队列中的数据


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php 用 redis做队列 运行过程是什么样的?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址