请教一下php异步方案,谢谢!

发布于 2021-11-29 05:35:34 字数 266 浏览 976 评论 15

各位好:

    我的业务系统想要增加一个消息群发功能,就是类似给用户群发消息,或者实时调用第三方系统接口的功能。因为这个群发的业务量可能会大,所以想实现批量异步操作功能。有没有什么框架或者工具基于PHP可以实现每秒查询数据库是否有群发任务,如果有的话,则自动执行操作的。

但是目前还有没有想到用什么方法实现。所以请教该如何实现?

    百度了一下,有说用swoole-crontab的, 也有说用redis的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(15

离不开的别离 2021-12-03 19:51:59

但是怎么实现多线程呢? 因为如果同步执行的话,任务执行太的话,肯定也执行不完啊。

檐上三寸雪 2021-12-03 19:51:51

php 不是有命令行模式吗 那样子去执行长时间任务

把回忆走一遍 2021-12-03 19:51:31

队列用redis没问题。 但是如何自动检查是否队列里面有任务,还有大量异步执行任务呢?

平定天下 2021-12-03 19:51:31

看看这个 https://github.com/netkiller/SOA

悲喜皆因你 2021-12-03 19:51:09

redis 队列 完全可以应对

落墨 2021-12-03 19:35:35

swoole-crontab  +  redis

简单气质女生网名 2021-12-03 19:31:29

MQ 也挺合适

本王不退位尔等都是臣 2021-12-03 19:08:54

那如何实现异步呢?因为每个任务可能会费时长会长,所以同步跑的话,肯定实现不了呢。

沙与沫 2021-12-03 18:50:42

回复
已经是异步了啊,lpush加到队列就返回了

猫九 2021-12-03 16:33:20

回复
虽然是加到队列里面了。但是业务处理的时候,不是同步的话,得一个任务处理完之后,才能处理下一个么。 不能让任务异步执行么。

自此以后,行同陌路 2021-12-03 15:11:59

回复
仔细看我说的“然后后台运行一脚本,在死循环里用brpop取出来一个一个处理”

坐在坟头思考人生 2021-12-03 00:39:47

回复
“一个任务处理完之后,才能处理下一个”是在另一个进程或线程里处理就是异步,看来你还不太明白“异步”的意思,异步就是当前线程或进程不等待处理结果,由另一个线程或进程来处理。你觉得只有一个进程或线程处理太慢,你可以启多个嘛

绝影如岚 2021-12-02 13:06:42

用redis的list作队列就行了。加入队列用lpush,然后后台运行一脚本,在死循环里用brpop取出来一个一个处理,brpop当队列里没东西里会阻塞在那里

归途 2021-12-02 06:47:27

嗯嗯,这是最方便的方法了。

陌若浮生 2021-11-30 08:03:12

用php跑个脚本,定期到数据库里面扫描就行。做好队列的管理。
可以同时跑多个进程,一般来讲够用了。
瓶颈应该是在网络通讯上。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文