【发布时间】:2012-08-06 21:45:31
【问题描述】:
是否可以在 LAMP 服务器上的 PHP 脚本中设置 cron 作业以运行另一个 PHP 脚本?我是一个有 cron 工作的新手,但我确实非常了解 php。我是否必须从 PHP 访问 shell 才能设置 cron 作业?例如,如果我想在从 call.php 调用 execute.php 后 5 分钟内自动执行它,我将如何编写代码?
编辑:为了清楚起见,我只想在它被调用 5 分钟后运行一次 execute.php,而不是让它每天重复或类似的事情。所以,在cron作业执行完之后,cron作业应该被丢弃。
【问题讨论】:
-
我已尝试搜索创建 cron 作业的方法,但找不到有关如何从 PHP 进行设置的信息。我不想手动设置它,它需要从 PHP 脚本自动设置。我真的找不到这方面的信息,而且我对 cron 作业知之甚少,除了它们运行预定的作业这一事实。
-
所以你想运行一个脚本,然后在它完成后,在再次执行之前留出 5 分钟的间隙。而是每 5 分钟一次?如果执行时间过长,这是为了阻止它重叠吗?一个场景在这里会有所帮助。
-
@Waygood 查看我添加到帖子中的编辑,我只希望它运行一次,在它被调用后正好 5 分钟,并且永远不会再运行一次,除非从 execute.php 再次调用它。因此,如果用户访问 call.php,即使用户离开页面、关闭浏览器等,execute.php 也应该在 5 分钟后运行。之后,除非 call.php 再次调用它,否则 execute.php 不会再次运行,在在这种情况下,将创建另一个时间表。
-
您可以在触发脚本运行完毕后在 shell 中触发
at命令 - computerhope.com/unix/uat.htm -
我认为您或用户将启动 call.php 脚本运行,然后 execute.php 需要在 5 分钟后完成。如果 call.php 1 秒后再次运行会怎样?更好地解释这些脚本正在做什么会有所帮助,并使我们能够更好地计划冲突、溢出等。但到目前为止,@Crontab 通过 exec() 提出的“at”建议将是前进的方向。