素材牛VIP会员
PHP用什么来快速消费队列
 yj***23  分类:PHP代码  人气:1683  回帖:15  发布于6年前 收藏

应用场景

一、群发业务

这些业务的特点就是不是很要求实时性,可以保证统计,支持查看进度,可将不成功的任务重扔回队列,又可以手动剔除一些重复不正常的任务。

  • 短信群发

  • 邮件群发

  • 群PUSH

二、数据迁移业务

因为数据库的特性不能一库走天下,所以在用户发布内容时,能够进行较为实时的数据迁移

  • 要求可用性高

  • 处理最好能够并发(因为现在业务小所以是最好

  • 实时性强(如果实时性不强,用户发布动作,一个页面跳转的网络I/O时间内会对用户造成库困扰)

根据目前未知的热心回答简单总结

一、 crontab + php

  • 定时能力不强,虽然可以多个crontab 跑,PHP自己做定时器

  • 另外涉及到锁,要不有些任务是不是会重复跑了

    二、php-resque https://github.com/chrisboulton/php-resque

  • 是否是支持持REDIS?

  • 在框架内例如YII2使用方便吗?

为什么没有人提到swoole workman?

不管怎么样,我是都点了赞 …………

讨论这个帖子(15)垃圾回帖将一律封号处理……

Lv4 码徒
贼***9 CEO 6年前#1

使用swoole即可

Lv5 码农
h***o 交互设计师 6年前#2
while(true){
    //如果队列空了 sleep几秒
    //处理过程
    //处理完一条usleep几毫秒,别把服务器拖垮
}
Lv4 码徒
想***儿 技术总监 6年前#3

脚本,不断的消费

Lv6 码匠
lo***ou 职业无 6年前#4

简单对于消费队列常见的做法基本差不多了
配置crontab,每分钟都运行,运用一个shell,
此shell要判断当前有没有消费进程在,shell中时是死循环

例如

if ( 'test.php'进程存在 ) {
    exit()
}

while( true ){
    sleep 1
    php  test.php
}
Lv5 码农
陪***ˇ 产品经理 6年前#5

可以试试php的多线程:pthreads

Lv5 码农
li***56 移动开发工程师 6年前#6

php-resque,自带dashborad可以查看任务执行情况
php-resque-scheduler 支持延时执行任务,比如多少小时之后

ruby版的resque貌似还支持cron,但是php版的resque是不支持的。

Lv3 码奴
赵***6 Linux系统工程师 6年前#7

我的做法是用Workman去执行一个死循环,当然用swoole也是很好的

Lv6 码匠
qx***23 Linux系统工程师 6年前#8

其实使用一个PHP 脚本一直去获取MQ 中的数据,并对数据进行消费。然后使用 supervisor 或者daemonise 做守护也是可以的。不过PHP 脚本还是有一个最长运行时间比较好,这样可以定时的释放一些没有释放的内存,然后由守护进程重启

Lv5 码农
隔***王 学生 6年前#9

守护进程这一块可以使用swoole来搞就可以了。

Lv1 新人
郭***己 Web前端工程师 6年前#10

用队列,可以看看php_resque。

crontab也可以,但是频率比较固定不太好控制。

写脚本循环的话需要开一个守护进程,不然进程挂了都不知道,不推荐。

上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取