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

起个昵称吧 发布于 2016/10/20 22:24
阅读 502
收藏 3

各位好:

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

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

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

加载中
0
开源春哥
开源春哥

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

小紫羽
小紫羽
嗯嗯,这是最方便的方法了。
0
wei2011
wei2011
用redis的list作队列就行了。加入队列用lpush,然后后台运行一脚本,在死循环里用brpop取出来一个一个处理,brpop当队列里没东西里会阻塞在那里
wei2011
wei2011
回复 @起个昵称吧 : “一个任务处理完之后,才能处理下一个”是在另一个进程或线程里处理就是异步,看来你还不太明白“异步”的意思,异步就是当前线程或进程不等待处理结果,由另一个线程或进程来处理。你觉得只有一个进程或线程处理太慢,你可以启多个嘛
wei2011
wei2011
回复 @起个昵称吧 : 仔细看我说的“然后后台运行一脚本,在死循环里用brpop取出来一个一个处理”
起个昵称吧
起个昵称吧
回复 @wei2011 : 虽然是加到队列里面了。但是业务处理的时候,不是同步的话,得一个任务处理完之后,才能处理下一个么。 不能让任务异步执行么。
wei2011
wei2011
回复 @起个昵称吧 : 已经是异步了啊,lpush加到队列就返回了
起个昵称吧
起个昵称吧
那如何实现异步呢?因为每个任务可能会费时长会长,所以同步跑的话,肯定实现不了呢。
0
公孙二狗
公孙二狗

MQ 也挺合适

0
mickelfeng
mickelfeng
swoole-crontab  +  redis
0
阳阳VIP
阳阳VIP
redis 队列 完全可以应对
起个昵称吧
起个昵称吧
队列用redis没问题。 但是如何自动检查是否队列里面有任务,还有大量异步执行任务呢?
0
netkiller-
netkiller-
看看这个 https://github.com/netkiller/SOA
0
我是MN
php 不是有命令行模式吗 那样子去执行长时间任务
起个昵称吧
起个昵称吧
但是怎么实现多线程呢? 因为如果同步执行的话,任务执行太的话,肯定也执行不完啊。
返回顶部
顶部