以下是我的情况:我们有一个外部提供商,它将在一周的指定时间每隔30秒将XML文件推送到我们的服务器。那个时间每周都会有所不同。因此,我想为我的用户提供一个界面,在我们网站的管理方面,他们可以“按下按钮”并触发数据捕获。 (并以同样的方式关闭工作)
我计划用PHP做到这一点。我假设我需要从我的脚本运行一些系统命令来安排和删除cron作业。
我的问题是:这是最好的方法吗?从PHP安排和删除cron作业有任何危险吗?在我创建这个时,我需要记住哪些事情?
此外,任何关于如何实现这一点的指示/提示都非常受欢迎。提前致谢。
答案 0 :(得分:4)
我建议只保留cron作业,查找上传的XML文件,每分钟都在运行。检查目录中是否有任何文件是不够昂贵的操作,您需要在不需要时将其关闭以进行相关的管理界面。
答案 1 :(得分:2)
我建议您不要使用PHP添加或删除cron作业。您应该编写一个(固定的)cron作业,而不是使用PHP配置。它可以在每次为您排队的实际作业运行时检查一些配置文件或数据库。
答案 2 :(得分:1)
您可以在crontab文件中读取并添加/取消注释或注释掉运行脚本的行。这会让我感到紧张,因为错误可能会导致您的crontab损坏,影响其他工作。
您也可以让cron作业继续运行。让你的on / off开关在某个其他文件或数据库中设置一个值,然后让cronned脚本检查该值以确定它是否应该实际执行任何操作或只是退出。
或者,只需让cron作业一直处于运行状态,这样您的用户就可以获得全新的数据,而不必记得打开文件读取。
或者,设置cron作业,使其仅在一周的特定时间运行。
答案 3 :(得分:1)
我以前做过这种事。我不建议在crontab级别打开/关闭cron。
相反,让cron始终保持运行,但PHP脚本应如下所示:
if( ScriptIsEnabled() )
{
DoWork()
}
ScriptIsEnabled()
应在配置文件,数据库,内存缓存中查找标志,或者您希望如何与脚本进行通信。我更喜欢memcache(最少开销 - 只是设置一个值)在数据库上。
然后你可以使用带有开/关按钮的web gui来控制它。