使用PHP添加/删除cron作业

使用PHP添加/删除cron作业,php,cron,Php,Cron,以下是我的情况:我们有一个外部提供者,它将在一周中的指定时间每隔30秒将XML文件推送到我们的服务器。这一时间每周都会有所不同。因此,我想给我的用户一个界面,在我们网站的管理端,他们可以“按下一个按钮”,并触发数据捕获。(并以同样的方式关闭作业) 我计划用PHP来实现这一点。我假设需要从脚本中运行一些系统命令来调度和删除cron作业 我的问题是:这是最好的方法吗?从php中调度和删除cron作业是否存在任何危险?当我创建这个时,我需要记住什么 此外,任何关于如何实现这一点的指针/提示都是非常受欢

以下是我的情况:我们有一个外部提供者,它将在一周中的指定时间每隔30秒将XML文件推送到我们的服务器。这一时间每周都会有所不同。因此,我想给我的用户一个界面,在我们网站的管理端,他们可以“按下一个按钮”,并触发数据捕获。(并以同样的方式关闭作业)

我计划用PHP来实现这一点。我假设需要从脚本中运行一些系统命令来调度和删除cron作业

我的问题是:这是最好的方法吗?从php中调度和删除cron作业是否存在任何危险?当我创建这个时,我需要记住什么


此外,任何关于如何实现这一点的指针/提示都是非常受欢迎的。提前感谢。

我建议让cron作业一直运行,每分钟都在查找上传的XML文件。检查目录中是否有任何文件并不是一项昂贵的操作,您需要创建一个相关的管理界面,以便在不需要时将其关闭。

您可以读入crontab文件并添加/取消注释或注释掉运行脚本的行。这会让我感到紧张,因为一个错误可能会使你的crontab坏掉,影响其他工作

您也可以让cron作业保持运行。让on/off开关在其他文件或数据库中设置一个值,然后让cronned脚本检查该值,以确定它是否应该实际执行任何操作或只是退出

或者,让cron作业一直运行,这样用户就可以始终拥有新的数据,而不必记得打开文件读取


或者,设置cron作业,使其仅在一周中的特定时间运行。

我建议您不要使用PHP添加或删除cron作业。您应该编写一个(固定的)cron作业,该作业将使用PHP进行配置。它可以在每次运行时检查一些配置文件或数据库,以查找您排队的实际作业。

我以前做过这种事情。我不建议在crontab级别打开/关闭cron

相反,让cron一直运行,但PHP脚本应该如下所示:

if( ScriptIsEnabled() )
{
  DoWork()
}
ScriptIsEnabled()
应该在配置文件、数据库、memcache中查找标志,或者您希望以何种方式与脚本通信。与数据库相比,我更喜欢memcache(开销最小——只需设置一个值)


然后,您可以使用带有开/关按钮的web gui来控制此操作。

我应该将此部分作为我的问题。。。我想我需要每隔30秒左右运行一次作业,才能获取最新的数据。每30秒解析一个大小合理的xml文件是否会对性能产生负面影响?或者这是一个没有实际意义的观点?如果它“大小合理”,我怀疑你会伤害到任何东西。但是请注意,
cron
的最佳分辨率是每分钟一次;如果您必须每30秒进行一次处理,那么您需要让cron作业睡眠30秒,然后进行第二次检查,或者只是创建一个守护进程。啊,我忘记了cron只会下降到分钟而不是秒。感谢您的帮助。考虑到您的建议,我将设置cron作业持续运行的位置,并检查目录中是否有更新的文件。这似乎是最简单、最有效的解决办法。感谢您的帮助+1,这是一种非常好而且最可靠的方法,尤其是当您因为安全特权而无法直接操作crontab时。