V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nolo
V2EX  ›  PHP

如何用 php 实现类似微信红包过期自动退回的功能

  •  
  •   nolo · 2017-01-08 21:17:28 +08:00 via Android · 2951 次点击
    这是一个创建于 2870 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前搜索过相关的 php 定时任务的实现,比如用 corntab 的,但是并没有找到类似可以动态管理定时任务的。
    或者不需要自己造轮子,有没有第三方云提供类似动态管理定时任务的服务😃,新浪云的定时任务只是个定时器,还没有接口。。。
    11 条回复    2017-01-09 23:36:09 +08:00
    nolo
        1
    nolo  
    OP
       2017-01-08 21:21:22 +08:00 via Android
    别沉。。别沉。。
    shiny
        2
    shiny  
       2017-01-08 21:21:41 +08:00 via iPhone   ❤️ 3
    用消息中间件队延时 24 小时触发就好。轻量级, Redis 也能做。
    skywayman
        3
    skywayman  
       2017-01-08 22:18:11 +08:00   ❤️ 1
    Redis 吧,它的数据结构+自动过期应该能满足你需求,性能也好.
    baoguok
        4
    baoguok  
       2017-01-08 23:53:59 +08:00   ❤️ 1
    2 楼是一种方案

    主动或者被动更新红包状态即可
    zjqzxc
        5
    zjqzxc  
       2017-01-09 08:15:58 +08:00   ❤️ 1
    定时任务,每分钟或每十五分钟执行一次(或者其他事件),自己用数据库实现一个简易的红包消息队列(如果是只有 php+mysql 的虚拟主机的话),把红包事件写入队列,每次定时任务检查队列是否已经有红包超时。

    逻辑上不复杂,可能自己实现都算不上是造轮子吧。。
    chenqh
        6
    chenqh  
       2017-01-09 09:27:17 +08:00
    关注,我也想要管理 crontab 的东西。。现在 crontab 出错了都不知道。
    klom303
        7
    klom303  
       2017-01-09 09:47:49 +08:00   ❤️ 2
    突然想到 Laravel 框架里有个任务调度器 https://laravel-china.org/docs/5.1/scheduling
    yuanchao
        8
    yuanchao  
       2017-01-09 09:53:52 +08:00
    @klom303 Laravel 的任务调度,也是依赖于 crontab 的,需要 crontab 每分钟执行 Laravel 的任务调度
    klom303
        9
    klom303  
       2017-01-09 09:56:43 +08:00
    @yuanchao 你说的对,我只是觉得这样可能管理起 crontab 来会简单点
    yuanchao
        10
    yuanchao  
       2017-01-09 10:00:17 +08:00
    @klom303 嗯嗯,这个确实是!
    mingyun
        11
    mingyun  
       2017-01-09 23:36:09 +08:00
    @klom303 这个可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3240 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 12:36 · PVG 20:36 · LAX 04:36 · JFK 07:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.