使服务器每天运行一次

Posted

技术标签:

【中文标题】使服务器每天运行一次【英文标题】:Make server run function once per day 【发布时间】:2016-08-12 16:21:02 【问题描述】:

我的数据库中有一个对象,其中包含具有不同日期的行 + 电子邮件。如果任何列出的日期是当前日期,我需要服务器每天或每周自动检查一次,如果是,则向该人发送电子邮件。 (背面和下方物体的图像)。

我在后台的服务器端逻辑和操作中发送了一封电子邮件“按需操作”,它有效,但我必须手动触发它。相反,我需要服务器在特定时间触发它。

这有可能吗,如果可以,怎么做?

我正在考虑的一个解决方案是拥有一个循环遍历对象、检查日期和发送电子邮件的函数。然后以某种方式使服务器每天/每周运行一次此功能。

【问题讨论】:

对于cron kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab 来说,这听起来像是一项完美的任务 你的服务器是基于 unix 还是基于 windows? 不确定,但是该站点托管在 one.com 上。并使用 backand 作为 BaaS @qua1ity 您可能需要某种 VPS,以便您可以在操作系统上实际配置东西,因为 cron 或计划任务执行(并运行任何自定义脚本)将需要它,除非服务您的使用在他们的设置/控制面板中提供了此选项。 或者,触发器可能发生在实际服务器之外,但这使得它可能被任何人触发,如果你有一些秘密,它可能会起作用,但取决于可能出现的问题的严重程度如果值得做,就必须权衡。 【参考方案1】:

Cron 解决方案是我们计划在接下来的几周内添加的东西,但与此同时,我们有一个很好的免费解决方案可以让您这样做。

服务是https://www.easycron.com。

你只需要指定动作的URL,你可以从测试动作面板获得(在测试模式下执行之后)。

要访问该操作,您需要实现基本身份验证,这意味着使用 masterKeyToken( Security & Auth--> Configuration) 和 adminKey (Security & Auth--> Team--> 点击密钥一个管理员附近的图标),像这样:

https://masterKeyToken:adminKey@api.backand.com/1/objects/action/ObjectName1?name=YourActionName

要了解更多关于基本身份验证的信息,请单击此处:http://docs.backand.com/en/latest/apidocs/security/#basic-authentication

【讨论】:

【参考方案2】:

Cronjobs 是要走的路。

如果您的主机不支持 cronjobs,您就没有机会做好它。 一个快速的谷歌告诉我 one.com 可能不支持 cronjobs。但我不确定。

也许可以寻求支持。

如果他们不这样做,我会选择一个不差的主机。 (只有烂主机不支持 crons。我不是说 one.com 是这样的主机,因为我不知道)。

如果您不想这样做并且他们不提供 crons,您可以使用“Poor Mens Cron”。这是互联网古代的蹩脚黑客。 你可以用谷歌搜索,因为我不推荐。

【讨论】:

刚问过 One 的支持,显然他们的服务器不支持 cron 作业.. 我现在的建议很明确:更改您的虚拟主机。 Cronjobs 是一种基本功能,一般来说,对于一个好的托管来说,价格似乎太低了。提示:可能考虑一个不在 one.com 比较表上的主机(在索引页面上)。 好的,谢谢,会调查的。还偶然发现了像 setcronjob.com 这样的网站,您认为这可能是一种选择吗? 对于服务,脚本必须是公开可用的。这是一个小小的安全问题。在您的服务器上使用真正的 cronjobs,脚本可以无处不在。 但是是的。这是可能的。

以上是关于使服务器每天运行一次的主要内容,如果未能解决你的问题,请参考以下文章

用 k8s 运行一次性任务 - 每天5分钟玩转 Docker 容器技术(132)

django 在第一次脚本运行后每天保存一次数据到文件

mysqld 服务每天在 ec2 服务器上停止一次

每天在特定时间调用方法

存储过程在第一次运行时运行缓慢

更改图像的来源使其在第一次单击时其宽度/高度为零