如何在特定时间内运行PHP脚本,但不使用cron作业?

推荐答案1

使用cron作业.真的,这就是.

然后您需要其他托管服务.


好吧,我会给你几个其他建议.

一种是我在一个项目上使用的一种方法,我被告知我无法使用cron,但是我开发的应用程序必须每天重新计算一些值.我意识到,如果我只是确保在任何用户看到它们时都确保重新计算值 .这样,当任何人一天之内第一次提出任何请求时,他们将根据该请求重新计算.我实施了一些由任何请求运行的常见代码.它检查了每天需要计算的值,并查看过去的最后计算时间戳是否太远了.然后,它将在当前用户的请求期间重新计算它们,并更新时间戳.

这意味着当天的第一个用户会发现他们的请求有点慢,但是他们保证看到重新计算的每日值.随后的请求不会承受此额外的性能成本.

鉴于每日任务不需要很长时间,因此可以使用此解决方案.这是用户在要求期间可能发生的事情.这只是对每日计划任务的模拟.它并没有在指定的时间运行任务,而是在任何用户需要查看值之前就将其运行.如果您确实需要一个计划的任务才能在特定时间运行,这将行不通.

另一个解决方案是在服务器上启动PHP脚本,此脚本永远不会退出.它只是运行一个无限的循环.以下是一些伪代码来给出这个想法:

  1. <?php 
  2. while (true) { 
  3. if (it is time to run the scheduled task) { 
  4. # set the next time to run the scheduled task 
  5. # do the scheduled task 
  6. } 
  7. sleep(60); # whether the task ran or not, go dormant for 1 minute 
  8. } 

如果您能够在服务器上运行不仅要处理HTTP请求的服务器上的脚本,则可以使用.如果您无法在此服务器上访问cron,则可能无法启动这样的脚本.

同样出于任何原因退出,它会中断无限循环,您必须有某种重新启动的方法.