【问题标题】:How to run 3 php scripts in different times, every 30 minutes as cron job?如何在不同时间运行 3 个 php 脚本,每 30 分钟作为 cron 作业?
【发布时间】:2011-08-08 23:37:49
【问题描述】:

嗯,

我有 3 个不同的 php 脚本,实际上它是由一个 cron 作业运行的,但我的 cron 文件中有 3 个条目,我希望只有一个。我会尽力解释:

1 - 文件在我的数据库中运行查询并在数据库中保存一些数据。 (需要几秒钟) 2 - 运行 2 号脚本,这将在我的 Web 服务器中创建 2 个新的配置文件。 (执行需要1分钟以上) 3 - 第三个文件打开ssh连接并在服务器中执行一些命令,它会将步骤2生成的文件放入服务器并重新加载服务器。

实际情况:

我每次执行 3 个脚本,所有 3 个脚本需要每 30 分钟运行一次,然后我运行第一个,5 分钟后运行第二个,最后 15 分钟后运行脚本 2 我运行脚本 3.

它工作得很好,但我想在一个 php 脚本中做所有事情,这可能吗并且在我的 cron 中只给一个调用?

【问题讨论】:

  • include("1.php"); include("2.php"); include("3.php"); ?
  • 我需要彼此之间的时间跨度。
  • 我很好奇你为什么每 30 分钟重启一次网络服务器!?
  • @Fernando 啊,我明白了。在这种情况下,三个 cron 作业听起来像是 IMO 的最佳选择——尽管理论上,您可以关闭时间限制,并在这段时间内关闭 sleep()。但如果你没有迫切的理由这样做,我会保持原样。
  • @Jakub 我正在重新加载,因为我需要更新所有文件。重新加载需要几毫秒,对服务器来说没有问题..

标签: php cron


【解决方案1】:

如果脚本都依赖于已完成工作的前一个脚本,您可能只想以固定的时间间隔运行第一个,然后让该脚本依次执行另外两个。

stage1.php:

<?php

... do important stuff...

include('stage2.php');
include('stage3.php');

这样,第二个和第三个脚本将在第一个脚本完成它必须做的任何事情之后才开始运行,并且如果第一个序列中出现故障,您就有机会中止整个事情。

任何其他方式都会非常激烈。考虑以下顺序:

  • 脚本 #1 运行备份
  • 脚本 #2 将备份文件传输到另一台服务器
  • 脚本 #3 从备份中清除

无论出于何种原因,脚本 #1 运行时间过长,以至于脚本 #2 在备份完成之前启动并开始传输备份文件。由于网络繁忙,文件传输需要额外的时间,所以现在您已经运行备份,它正在传输到另一台服务器,并且清理脚本现在已经删除并删除了 .tar.gz脚本 #1 正在制作。

【讨论】:

  • 这似乎不是他想要的,显然他们需要在某些时候运行(尽管值得一问为什么)
  • 这是一个非常好的解释,我真的认为它可以帮助我,我只需要在第一个块和包含之间使用一些函数。类似 sleep() 函数的东西.. 但我不确定..
  • Cron 无法在某事中间启动脚本,因此您要么必须安排 3 个 seaerate cron 作业,要么安排第一个脚本并让它执行一些内部计时。做任何事情,然后计算下一个脚本应该运行多少秒,并在这段时间内sleep()
猜你喜欢
  • 2022-12-18
  • 2016-09-22
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 2011-05-10
  • 2011-06-20
  • 1970-01-01
  • 2012-08-08
相关资源
最近更新 更多