搜索

首页  >  问答  >  正文

mysql - PHP定时任务,在某个操作执行后,计时两个小时然后给用户发短信。

需求是,在用户进行了一个操作之后,倒计时俩小时,然后到时间点执行另一个操作

但是现在没有办法来进行这两个小时的计时。

请问有没有什么好的思路

ringa_leeringa_lee2797 天前755

全部回复(9)我来回复

  • 巴扎黑

    巴扎黑2017-05-16 13:06:54

    我的思路是,通过队列延迟分发一个任务,就是2小时后触发,然后在任务中发送一个短信即可。
    以下是文档链接:

    • 队列延迟分发

    • 短信通知

    回复
    0
  • PHPz

    PHPz2017-05-16 13:06:54

    建一张表,存用户手机号,短信内容,应发送的时间。
    用户点击一次就新增一行记录。
    设置一个定时任务,每分钟检查一次,到了时间就发送,发完就删除这条记录

    回复
    0
  • PHP中文网

    PHP中文网2017-05-16 13:06:54

    把要执行的任务名及执行时刻塞进redis有序集合中,然后定时检查redis有序集合的分值,如果在范围内就取出执行任务

    回复
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:06:54

    用户操作的时候肯定会存一个操作时间到表里,守护进程一直去查询到两个小时的时候发短信

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:06:54

    这就是定时器和消息队列的需求。。。

    回复
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:06:54

    linux 使用crontab 而window这种界面系统有其定制任务,使用定时任务curl指定php文件,又或者使用php执行php文件。这样的话通过每分钟执行定时访问(类似轮询),在访问php文件时候读取存储数据表的数据(条件两个小时数据),你需要将数据丢进队列内(避免数据量过大时候,大量发送信息导致服务器资源使用过大),最后将队列里抽取定量数据,进行发送数据

    回复
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 13:06:54

    用crontab,跑数据库的任务队列

    回复
    0
  • 滿天的星座

    滿天的星座2017-05-16 13:06:54

    你可以利用一个php的异步框架,如workerman或者swoole 建立一个定时器,就可以在你需要的时候执行任务!!!

    回复
    0
  • PHP中文网

    PHP中文网2017-05-16 13:06:54

    把要触发的时间和事件保存下来,脚本每分钟去跑数据,到点了就执行,最简单了

    回复
    0
  • 取消回复