V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
odoooo
V2EX  ›  问与答

PHP 监控 redis 任务队列有什么方案吗

  •  
  •   odoooo · 2016-02-24 14:22:05 +08:00 · 2990 次点击
    这是一个创建于 3232 天前的主题,其中的信息可能已经有所发展或是发生改变。

    放入队列 LPUSH chuli:duilie [shellcode]

    取出一个并执行并执行取出内容。 RPOP chuli:duilie

    我想通过 php 来实时监控 chuli:duilie 这个对联,如果发现队列中有内容就去 exec 执行。请问有没有什么办法实现。

    谢谢各位。我现在的做法是再执行结束后,做一个查询,但是感觉这样不太好。

    7 条回复    2016-02-24 17:25:00 +08:00
    holyghost
        1
    holyghost  
       2016-02-24 14:27:33 +08:00   ❤️ 2
    php-resque 已经完成了你说的这些功能了。

    要么直接拿来用,要么就去参考下。
    odoooo
        2
    odoooo  
    OP
       2016-02-24 14:42:31 +08:00
    @holyghost 十分感谢,马上看
    lecher
        3
    lecher  
       2016-02-24 15:15:26 +08:00 via Android
    自己写也可以,很容易定制, crontab 开一个定时任务,调用 shell 命令定时检测进程是否启动,没有就启动。
    启动的进程去循环取 Redis 数据之后调用函数执行。

    应该在两百行代码左右的功能。
    haython
        4
    haython  
       2016-02-24 15:30:37 +08:00
    blpop, brpop 这两个命令是阻塞的,直到有数据
    GTim
        5
    GTim  
       2016-02-24 15:43:28 +08:00
    @haython 赞同,你唯一要做的就是防止长链接自己断了
    shiny
        6
    shiny  
       2016-02-24 15:45:56 +08:00
    brpop 需要注意的地方是小心处理速度跟不上插入队列的速度,然后内存耗尽 game over
    odoooo
        7
    odoooo  
    OP
       2016-02-24 17:25:00 +08:00
    @shiny
    @haython
    @GTim
    谢谢,刚刚看了 Beanstalk 和 gearman 也有持久化队列功能,正在研究中。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1247 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 23:38 · PVG 07:38 · LAX 15:38 · JFK 18:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.