2009-06-12 41 views
0

我有一个PHP脚本,需要在每个工作日的特定时间运行。是cron还是Windows任务调度程序执行此操作的唯一方法?
有没有办法从另一个PHP脚本中设置它?每天在特定时间执行PHP脚本有哪些选项?

+3

这正是cron所使用它的意义所在。 – rojoca 2009-06-12 01:41:16

回答

5

取决于时间的精确程度。我见过的一种技术(被称为“穷人的克朗”)是让一个经常访问的脚本(例如一个站点的主页)在一定时间后在第一页加载时触发一个任务(保持跟踪数据库)。

如果您需要任何有保证的准确性,但cron或Windows计划任务确实是最佳选择。如果你的主机不支持它们,现在是时候获得更好的了。

+1

我会说完全一样的东西;没有什么比这更好的了。 +1 – 2009-06-12 01:37:48

1

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

0

您可能想要使用cron(或windows计划任务)。

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

0

你可以编写一个长时间运行的脚本,在预定义的时间运行你的主脚本,但这将是非常不必要的,错误倾向于,它将基本上是“phph重写”。

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

2

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

0

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

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 
+2

PHP可以在命令行上运行,这将避免超时问题。 – ceejayoz 2009-06-12 01:44:28

1

如果这是一个远程服务器,你不必,你可以设置的cron/Windows调度上的cron访问您的计算机打开一个网页浏览器到包含您希望运行的脚本的页面

0

在cron不可接受的环境中,统一服务器项目在mimicking cron上有一些很好的建议。尽管如此,如果cron完全是一种选择,那就使用它。

相关问题