每3小时执行一次要求

时间:2019-01-05 12:33:56

标签: php cron jobs

我需要使用一个API向其发送信息,但是该API需要我每三个小时获得一个访问令牌。我的问题不是关于API本身,而是关于我必须这样做的方式。我知道我需要使用cron作业来做到这一点。但这是唯一的方法吗,还是我可以自己制作php scheduale?如果不是,那么我可以使cron作业“发出请求”而不是“运行脚本”吗? 我想到的是,我将制作一个php文件,该文件将触发我的系统获取新令牌(所有令牌请求数据和功能将保存在我的系统中,而不是cronjob文件中),而不是外部的文件设置我的项目,并从外部对其进行更改。这是一个好主意吗,还是应该让cronjob文件为我获取令牌? 我希望我的观点正确。

3 个答案:

答案 0 :(得分:0)

首先,cronjob本身不执行任何操作,就像您说的“发出请求”一样。完全是“运行脚本”。现在为您解答,您可以通过多种方式来做到这一点,但这种工作的最佳方式是cron。导致其在内核下工作,并且完全可靠且稳定。 第二,“保存在我的系统而不是cronjob文件中”是什么意思? 如果您的意思是将访问令牌存储在代码中,现在必须将其存储在文件中,因为cron运行脚本,并且该脚本将令牌保存在某个地方并且不安全,因此只需执行以下操作: 创建一个仅写入文件0或1的脚本。此脚本每3个小时由cron运行一次,并将0更改为1。您的代码始终会检查该文件,如果该值为1,则令牌已过期,并且您在生成新令牌之前会生成新令牌新的api调用,最后将文件再次更改为0。这只是一个简单的方法。 但请注意,这不是最佳做法,如果可以,另一边也可以实施刷新令牌方法。

答案 1 :(得分:0)

如果要运行的脚本是基于Web的,则可以考虑使用第三方服务(例如crono)以编程方式设置作业。

答案 2 :(得分:0)

每次cron作业运行时,您都可以记录在文件中创建的令牌,可以验证该令牌的存在时间,并且代码可以决定是否请求新令牌(如果令牌快要到期3个小时)。但是,如果在到期前15分钟进行操作,那将是理想的,因为与获取令牌的时间和令牌最终由第三方系统生成的时间有所不同,尽管该差异可能不是很大,但是很多事情可能发生在传输过程中,因此生成时间和ETA并不总是相同。 :)