每个月自动执行一次某程序,什么样的方法最简单? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tianxiacangshen
V2EX    PHP

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

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

    给这个操作设置一个 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
    Evnt  
       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 的话,新建一个定时构建的任务。
    herbertzz
        18
    herbertzz  
       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     Solana     3183 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 12:06 PVG 20:06 LAX 04:06 JFK 07:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86