【问题标题】:Best method to load a thousand Cron scripts加载一千个 Cron 脚本的最佳方法
【发布时间】:2012-11-05 15:37:48
【问题描述】:

我一直在做一些研究,并试图找出运行我们网站之一的最佳方法。简而言之,将有大约 100 个子域,每个子域有 21 个需要运行的 cron 脚本。我通过使用一些可以使用的 fopen 函数将它缩短到 11 个。每个子域使用相同的 API 来提取数据并将其存储在本地 mysql 数据库中的次数更少。所有子域都有自己的数据库,并且不共享,并且这些数据库之间的信息永远不会重叠,因为它们都是唯一的数据。

我们打算将它托管在 VPS 托管上,我不确定这是否是最好的主意,但它应该可以按照我们的预期完成工作。这 11 个脚本的间隔是以下之一:

5 分钟、8 分钟、10 分钟、15 分钟、30 分钟、45 分钟、1 小时、3 小时、8 小时、12 小时和 24 小时

以 10 分钟间隔运行的那些通常加载速度非常快(低于 20 秒/脚本)

我的问题是,在没有...的情况下打开这么多脚本的最佳方式/最佳实践是什么? a.) 使服务器崩溃 b.) 让服务器变慢到可笑的程度 c.) 不让我们的 cron 脚本超时。

我对方法的想法: 1) 总共创建 11 个 cron 脚本并运行 fopen 函数,每个脚本之间可能有一个 sleep() 函数。问题是每个脚本可能需要打开 100 个文件。 2) 创建 1100 个 cron 作业以在设定的时间运行。 3) 创建大约 110 个 fopen cron 脚本,每个文件将运行 10 个脚本。

如果有人可以提供提示或技巧,将不胜感激!

另外,对于服务器使用,是否需要专用或 VPS?

【问题讨论】:

    标签: php mysql scripting cron hosting


    【解决方案1】:

    如果我理解正确,您可能想要设置 11 个 cron 脚本,并且每个 cron 脚本都会依次调用其他需要的脚本。您可能不需要 sleep() 中间,因为它们将按顺序运行,而不是并行运行。为了减少服务器负载,您还可以使用“nice”命令使脚本以低优先级运行。

    专用或 VPS 完全取决于您在服务器上施加的负载量。 VPS 的性能也可能因提供商而异。从提供的信息中确实无法衡量。如果您想省钱,那么我会说只是在 VPS 上尝试一下。您以后可以随时移至更昂贵的专用服务器。

    【讨论】:

    • 感谢 JMack。除非人们真的不同意,否则我将通过 HostGator VPS 或专用主机托管。我考虑过 InMotion 托管,因为我阅读了很多关于它们的精彩内容。您介意提供一个 nice 命令的参考,或者用外行的方式稍微解释一下吗?
    • 下面的页面应该会给你一些信息。基本上,调用所有其他脚本的 cron 脚本将在命令中使用 nice。 (例如:nice -n19 php /path/to/my/script.php) -n19 表示以尽可能低的优先级运行。请记住,如果它使用重型 MySQL,这可能无济于事。即使 PHP 将以低优先级运行,它连接的 MySQL 服务器也不会。
    • 不客气。如果我的回答对您有所帮助,请考虑将其作为您问题的“最佳答案”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多