每天在特定时间执行PHP脚本有哪些选项?

时间:2009-06-12 01:30:08

标签: php cron

我有一个PHP脚本需要在每个工作日的某些时间运行。 cron或Windows任务计划程序是唯一的方法吗?
有没有办法在另一个PHP脚本中设置它?

9 个答案:

答案 0 :(得分:5)

取决于时间需要多精确。我所见过的一种技术(被称为“穷人的cron”)就是让一个经常访问的脚本(例如网站的主页)在一定时间后在第一页加载时触发任务(跟踪在数据库)。

如果您需要任何类型的保证准确性,cron或Windows计划任务确实是最佳选择。如果您的主持人不支持他们,那么是时候更好了。

答案 1 :(得分:2)

cronScheduled Tasks外,您可以让PHP脚本始终运行它。该过程应该睡眠(在循环内),直到达到时间。然后,该过程可以执行剩余的功能/方法。或者,您可以设置另一个脚本(将充当守护程序)来检查时间并执行其他脚本。

答案 2 :(得分:2)

好了,因为Web是一种拉动机制,你必须采取某种行动来触发PHP脚本的执行。 cron是Windows上的* nix和任务调度程序的选项。您也可以编写自己的具有计时器的服务,但仅在需要时,这在更新程序,作业等的Windows服务中很常见。

你可以做到的一种方法是在cron任务中为每个需要的动作调用一个php脚本。或者一个执行其他任务的php脚本。基于Web的任务(例如PHP)的问题是超时。确保您的任务不到60-90秒。如果没有,你可能会考虑使用python,perl或ruby甚至bash脚本来完成工作而不是PHP脚本。

尽管如此,cron似乎是最好的选择。你必须用wget调用你的脚本。这里有一些例子:http://www.thesitewizard.com/general/set-cron-job.shtml

例如,它每天在11:

运行脚本
30 11 * * * /usr/bin/wget http://www.example.com/cron.php

答案 3 :(得分:1)

当然,Cron是迄今为止在* nix上安排任何事情的最佳方式。

答案 4 :(得分:1)

如果这是在远程服务器上你没有cron访问权限,你可以在你的计算机上设置cron / windows scheduler,打开一个Web浏览器到包含你想要运行的脚本的页面

答案 5 :(得分:0)

您可能想要使用cron(或Windows预定任务)。

如果你真的想要,你可以设置另一个PHP脚本,以无限循环连续运行(在循环中使用睡眠命令,比如30秒左右)然后当你达到你想要的日期/时间时执行其他脚本通过shell命令调用。虽然可能,我想不出是否有一个很好的理由使用这种方法而不是cron /预定任务

答案 6 :(得分:0)

你可以编写一个在预定义的时间内运行主脚本的长时间运行的脚本,但这将是非常不必要的,容易出错,并且它基本上是“在phph中重写cron”。

使用真正的cron本身将更容易,也是一个更强大的解决方案。如果要打包应用程序,可以将文件放在/etc/cron.d中,其中包含运行应用程序的单个cron行。

答案 7 :(得分:0)

您需要在Windows下使用cron作业(在Linux / Unix下)或计划任务。 可以连续运行另一个脚本,它会检查时间并以指定的时间间隔执行脚本,但使用操作系统提供的机制更容易管理,并且可以重新启动,等等。

答案 8 :(得分:0)

统一服务器项目在cron不可接受的环境中对mimicking cron提出了一些很好的建议。尽管如此,如果cron是一个选项,请使用它。