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

每个月自动执行一次某程序,什么样的方法最简单?

  •  
  •   tianxiacangshen · 2017-06-23 19:00:02 +08:00 · 4568 次点击
    这是一个创建于 2714 天前的主题,其中的信息可能已经有所发展或是发生改变。
    思来想去想用这么一种办法:

    给这个操作设置一个 30 天的缓存,然后在经常访问的 public function 里(比如 index ),每次访问都检测这个缓存是否存在,如果存在跳过,不存在则 ignore_user_abort 后台执行,弊端是 30 天才运行一次的方法却要无时无刻都检测,性能低下,有更好的办法吗?
    29 条回复    2017-07-06 21:05:29 +08:00
    zea
        1
    zea  
       2017-06-23 19:03:02 +08:00 via Android
    写个接口用 cron 调用?
    billion
        2
    billion  
       2017-06-23 19:11:29 +08:00
    crontab
    0 8 1 * * xxx
    每个月 1 号早上 8 点执行 xxx 命令。
    xcatliu
        3
    xcatliu  
       2017-06-23 19:16:12 +08:00 via iPhone   ❤️ 6
    女朋友每次来大姨妈的时候,你就正好闲下来去手动运行一次
    geelaw
        4
    geelaw  
       2017-06-23 19:18:49 +08:00   ❤️ 1
    @xcatliu 弊端是怀孕、更年期或月经不调的时候就会忘记这事
    Lax
        5
    Lax  
       2017-06-23 19:23:26 +08:00
    万一缓存挂了呢?

    用 cron 吧,记得记录一下上次完成时间。
    mooncakejs
        6
    mooncakejs  
       2017-06-23 19:26:47 +08:00
    cron 依赖缓存,,也许哪天心情好就点下清理缓存了。
    如果是虚拟主机没有 cron 可以用云触发 一个 url
    ech0x
        7
    ech0x  
       2017-06-23 19:39:13 +08:00 via iPad
    @geelaw
    @xcatliu 前提是要有女朋友
    nutting
        8
    nutting  
       2017-06-23 19:41:06 +08:00 via Android
    linux 的 crontab
    liuxu
        9
    liuxu  
       2017-06-23 19:41:42 +08:00
    一般都是写 crontab。。
    tianxiacangshen
        10
    tianxiacangshen  
    OP
       2017-06-23 19:41:55 +08:00
    @xcatliu
    @geelaw
    @Lax
    @mooncakejs

    是啊,都是问题,一是忘记女朋友大姨妈了怎么办,二是怀孕更年期大姨妈没来怎么办,三是不小心平常清理了怎么办,都是弊端
    580a388da131
        11
    580a388da131  
       2017-06-23 19:42:23 +08:00
    利用各种免费的云监控工具,写好判断,既能监测服务器状态,又能执行定时计划。
    sneezry
        12
    sneezry  
       2017-06-23 19:54:40 +08:00 via iPhone
    试试 Azure Function App 吧😃
    ipeony
        13
    ipeony  
       2017-06-23 19:58:09 +08:00 via Android
    上次看 v 友介绍的 jobber 可以看下
    expy
        14
    expy  
       2017-06-23 20:51:53 +08:00
    systemd/Timers 也行。。。

    OnBootSec=1minute
    OnUnitActiveSec=1month
    Event
        15
    Event  
       2017-06-23 21:25:39 +08:00
    监控宝 定时访问一个 URL 然后搭建网站写个 PHP 然后跑命令行
    whileFalse
        16
    whileFalse  
       2017-06-23 22:19:46 +08:00
    win 上有计划任务……
    tinyproxy
        17
    tinyproxy  
       2017-06-24 07:32:13 +08:00 via iPhone
    有 CI 的话,新建一个定时构建的任务。
    henyi2211
        18
    henyi2211  
       2017-06-24 09:56:38 +08:00
    看你服务器的环境咯,方法太多了
    gongzili456
        19
    gongzili456  
       2017-06-24 12:18:25 +08:00
    To be simple; use crontab.
    wyntergreg
        20
    wyntergreg  
       2017-06-24 14:22:32 +08:00
    @xcatliu 一看就没有女朋友,女朋友来大姨妈是最忙的时候,应该是大姨妈走的第一天闲来无事
    moult
        21
    moult  
       2017-06-24 19:52:31 +08:00
    当你收到工资卡的余额提醒的时候,就去手动执行一下。
    当然,如果这个月没有发工资,你也就不需要执行了。
    Arnie97
        22
    Arnie97  
       2017-06-24 21:45:06 +08:00
    /etc/cron.monthly/*
    halfcoder
        23
    halfcoder  
       2017-06-24 23:37:02 +08:00
    MrYELiex
        24
    MrYELiex  
       2017-06-24 23:37:56 +08:00
    也就 30 天一次 干嘛不手动
    carlonelong
        25
    carlonelong  
       2017-06-25 01:03:07 +08:00
    定个闹钟
    gouchaoer
        26
    gouchaoer  
       2017-06-25 16:38:09 +08:00 via Android
    用 cron 系统部署不好搞,就缓存来搞,反正流量不大
    simbest
        27
    simbest  
       2017-06-25 18:43:13 +08:00
    crontab
    wizardoz
        28
    wizardoz  
       2017-06-25 23:07:23 +08:00
    信用卡账单
    gidot
        29
    gidot  
       2017-07-06 21:05:29 +08:00
    linux 就 crontab
    windows 当然用系统自带的“计划任务程序”
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1070 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:45 · PVG 03:45 · LAX 11:45 · JFK 14:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.