【问题标题】:Need cron 'type' approach that runs constantly需要不断运行的 cron 'type' 方法
【发布时间】:2014-05-14 14:25:54
【问题描述】:

我需要一种体面的方法来帮助在我的共享托管服务器上运行 cron 类型的脚本。现在 - 它必须保留一个共享托管帐户,所以这不会改变。而且我知道“cron”可以做到这一点并将间隔设置为每分钟。但我想看看我们能不能比这更快一点。

我创建了一个基于 Web 的应用程序,它循环遍历这些目录中的目录和文件。当找到一个新文件时,它会执行其余需要发生的事情。这一切都按原样工作,那里不需要任何东西。这些正在处理的文件是“紧急”文件。它们帮助地方部门和人们在处理这些文件时实际做出响应。所以这里的“紧迫性”因素很重要。

话虽如此,但如果不经常(例如每 30 秒左右)听到执行此脚本的最佳方法会很有趣:

  1. 让托管公司介入
  2. 占用过多资源(内存/查询等。发生的查询很少)
  3. 仍然允许定期完成此任务而不会出现问题。

附带说明:我确实可以访问多个服务器上的多个帐户,我想到的一种方法是在这些帐户上创建单独的文件以运行,并且只需执行类似 file_get_contents 的操作(即使没有输出发生)所以它会执行脚本。再一次 - “紧迫性”是这个应用程序中的一个重要因素,所以让它尽可能快地运行很重要,但至少允许一个文件被“归档”并运行几个查询 - 而不会相互超越过程(重复)

如果这也有帮助,我确实可以访问 CLI (shell)。

【问题讨论】:

标签: php apache cron


【解决方案1】:

一个超级简单的选项 - 让 cron 每分钟运行一次任务:

function task()
{
    doYourThing();
    sleep(30);
    doYourThing();
}

它并不理想 - 但从技术上讲,它每 30 秒运行一次 doYourThing()。

编辑:当人们上传新文件以按需运行任务时,您为什么不“触发”一个事件?

【讨论】:

  • 我考虑过在他们上传时触发一些事件。问题是,他们通过标准的 Windows .bat 文件上传。如果没有让他们在他们的计算机上安装额外的东西,或者每次上传东西时都打开浏览器,我不知道在 bat 过程中触发某些东西的方法。有什么建议吗?
  • windows上的bat文件如何上传到你的服务器? bat 文件能否“点击”您网站上的 url - 触发任务?
  • 它在 bat 文件中使用 ftp 命令。是的,bat 文件可以访问服务器上的 url,但据我了解,只能通过打开浏览器,除非用户在他们的机器上安装了 curl 之类的东西。我真的不想让他们复杂化。除非我遗漏了一些可以在 bat 文件中使用的东西......
猜你喜欢
  • 1970-01-01
  • 2013-03-18
  • 2014-04-28
  • 2021-01-25
  • 2020-11-19
  • 2015-05-06
  • 1970-01-01
  • 2020-04-16
  • 2016-04-04
相关资源
最近更新 更多