如何自己实现一个异步任务器

AI摘要
本文分享了使用Redis队列与PHP常驻进程实现消息队列的技术方案。核心要点包括:使用Redis队列发送消息;PHP常驻进程需处理容错、中断重启与并发锁;消息取出后需备份防丢失;建议有条件时选用专业消息队列服务。

首先这里先暂时不给代码实现,后续有精力再补上。

1、使用 Redis 的队列数据类型,实现消息发送。

2、使用PHP启动一个常驻进程,接收并处理 Redis 的队列消息。

    这个进程的实现很关键了,要考虑各种容错和中断,重启机制。
    redis 的队列消息也要考虑各种未处理完成,消息丢失情况。

细节:
常驻进程可以配合Linux中的进程管理器,实现自动重启。

执行任务,需要加并发锁(悲观锁或自旋锁)。大家不要觉得这是单进程单线程的执行,不用加锁。你得知道你的触发是不确定的。

Redis 队列中,取出一个数据后,要注意,这个数据就不在原先的队列中了,我们此时可以做好备份机制,防止处理过程中意外情况,导致这条消息没有处理完成,数据丢失。

最后:有条件可以选择更专业的消息队列服务软件。(排名没有先后)
Kafka
ActiveMQ
RocketMQ
RabbitMQ
本作品采用《CC 协议》,转载必须注明作者和本文链接
六月的风
Junwind
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
躺平大叔 @ 躺平社区
文章
143
粉丝
17
喜欢
107
收藏
62
排名:258
访问:3.7 万
私信
所有博文
社区赞助商