php任务队列有什么优势,PHP使用任务队列这个词的含义,到底什么是任务队列
最近一个听到一个词:任务队列。
任务队列指的是什么呢?
我自己有一个理解,就是比如用户使用邮件注册,注册成功以后要给注册邮箱发一封信息。因为发邮件是很耗时的操作,所以将邮件放在队列中异步处理,不占用主线程。使用队列是不是就是这样的场景呢?
求大神解惑,传道!
回复内容:
最近一个听到一个词:任务队列。
任务队列指的是什么呢?
我自己有一个理解,就是比如用户使用邮件注册,注册成功以后要给注册邮箱发一封信息。因为发邮件是很耗时的操作,所以将邮件放在队列中异步处理,不占用主线程。使用队列是不是就是这样的场景呢?
求大神解惑,传道!
Yes, u 2 right.
可以给你提供一个方案,在 Redis 里面维护一个 List,业务代码给 List 里面插入邮箱地址,另外有一个脚本从 Redis 里面读到邮箱地址,专门做发送邮件的工作。
我写的一篇博客给出了 PHP 和 Redis 实现队列的示例:http://upliu.net/php-use-redis-as-queue-service.html
另外,天生异步的开发语言如Node.JS,进行网络请求(针对题主的场景就是发送邮件)的过程中不会阻塞住脚本的运行。
当然使用多进程也是可以的,在主进程里面 fork 出一个子进程,然后子进程去发送邮件,主进程继续执行其逻辑。不过我觉得这样略显蛋疼~
就是这样的。不过我通常不会用 php 来做这种持续性操作。
我的理解要按顺序执行的东西才用队例。
竟然你都启子线程了,为什么不多启几个子线程并行处理?
略显浅薄,求轻喷。
相关标签:php 队列
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php任务队列有什么优势,PHP使用任务队列这个词的含义,到底什么是任务队列相关推荐
- 54 分布式任务队列Celery
随着信息时代的持续发展,越来越复杂的业务需求对自动化运维的要求上了一个新的台阶,任务调度系统也由单一主机任务调度系统向分布式任务调度系统过度.无论是业务层面的作业调度还是运维本身的作业调度需求,分布式 ...
- 【Android 异步操作】线程池 ( Worker 简介 | 线程池中的工作流程 runWorker | 从线程池任务队列中获取任务 getTask )
文章目录 一.线程池中的 Worker ( 工作者 ) 二.线程池中的工作流程 runWorker 三.线程池任务队列中获取任务 getTask 在博客 [Android 异步操作]线程池 ( 线程池 ...
- 分布式任务队列--Celery的学习笔记
一.Celery简介 Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具.它是一个任务队列,专注于实时处理,同时还支持任务调度. 所谓任务队列,是一 ...
- 怎样实现一个非阻塞的超时重试任务队列
起因 最近接手一个项目,要把其中的阻塞任务队列,重构成非阻塞.在客户端很少有机会直接处理任务队列.项目完成需要总结经验 阻塞的发生 我这里先说明我遇到的阻塞问题,我这里的阻塞不是多线程访问的阻塞,概念 ...
- java 分布式任务队列_cerely-分布式异步任务队列
Celery 是一个强大的 分布式任务队列 的 异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务(async task)和定时任务(cron ...
- 可伸缩多线程任务队列
在我们的工作中,我们经常需要异步执行一些任务,下面介绍的这个可伸缩多线程队列,可满足我们的需求. 出自:http://www.codeproject.com/Articles/4148/Multith ...
- taobao-pamirs-schedule-2.0源码分析——任务队列分配源码分析
2019独角兽企业重金招聘Python工程师标准>>> 算法原理 分配服务器算法 算法原理是注册中心有一个队列表PAMIRS_S ,它包含如下关键信息:QUEUE_ID是队列标识 ...
- [源码解析] 并行分布式任务队列 Celery 之 多进程架构和模型
[源码解析] 并行分布式任务队列 Celery 之 多进程架构和模型 文章目录 [源码解析] 并行分布式任务队列 Celery 之 多进程架构和模型 0x00 摘要 0x01 Consumer 组件 ...
- DuiVision开发教程(12)-任务类和任务队列
基于MFC的界面程序中,如果存在多线程,一般情况下只有主线程(界面线程)可以调用Windows窗口相关的函数,否则如果在其他线程中调用了界面函数,很可能会造成异常.为此DuiVision界面库提供了一 ...
最新文章
- 拆位 ---- C. Johnny and Another Rating Drop[位运算,计算每一位的贡献+推导过程]
- 2018目标,提高免疫力,身体工作双丰收
- sublime配置python开发环境_win7 下搭建sublime的python开发环境的配置方法
- python写一个表白程序_用Python写一个能算出自己年龄的小程序
- SQL Server存储过程的基本概念以及语法【转】
- Boost:双图bimap与mi_hashed indices索引的测试程序
- 将社交登录添加到Spring MVC Web应用程序:注册和登录
- VUE:解决 [Vue warn]: Error in render: “TypeError: item.slice is not a function“ (取部分数据)
- 如何在微博侧栏中加入自己的微博[js]
- 切片与MapTask并行度决定机制
- 自己实现LinkedList类
- jdk api 1.8中文手册
- 使用nssm注册系统服务的详细方法
- EXCEL TIPS From Webs
- turicreate 视频_iOS 推出的turiCreate功能(一) 图片识别
- CodeForces 319B 栈
- 这应该是关于GPS定位写得最详实清晰的文章之一
- 【x86架构】x86平台CPU的历史
- 计算机网络漫谈:OSI七层模型与TCP/IP四层(参考)模型(转载)
- Java电商系统商品详情页存储方案设计
热门文章
- CobaltStrike的使用
- [网络安全提高篇] 一〇六.SQL注入之手工注入和SQLMAP入门案例详解
- LeetCode Algorithm 572. 另一棵树的子树
- HTML编码问题导致的乱码
- Django REST framework 开始
- 中国大学MOOC 计算机组成原理第1章测试
- Django学习~1
- 2018第九届蓝桥杯C/C++ B国赛 —— 第六题:矩阵求和
- PAT (Basic Level) Practice (中文)1011 A+B 和 C (15 分)
- 征战蓝桥 —— 2017年第八届 —— C/C++A组第5题——字母组串