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

2017-06-23 19:00:02 +08:00
 tianxiacangshen
思来想去想用这么一种办法:

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

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

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

OnBootSec=1minute
OnUnitActiveSec=1month
Event
2017-06-23 21:25:39 +08:00
监控宝 定时访问一个 URL 然后搭建网站写个 PHP 然后跑命令行
whileFalse
2017-06-23 22:19:46 +08:00
win 上有计划任务……
tinyproxy
2017-06-24 07:32:13 +08:00
有 CI 的话,新建一个定时构建的任务。
henyi2211
2017-06-24 09:56:38 +08:00
看你服务器的环境咯,方法太多了
gongzili456
2017-06-24 12:18:25 +08:00
To be simple; use crontab.
wyntergreg
2017-06-24 14:22:32 +08:00
@xcatliu 一看就没有女朋友,女朋友来大姨妈是最忙的时候,应该是大姨妈走的第一天闲来无事

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/370658

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX