【问题标题】:Always end script before some hour总是在几个小时前结束脚本
【发布时间】:2019-01-12 14:30:24
【问题描述】:

我正在寻找在几个小时之前结束脚本(可以用 PHP 或 Python 编写)的解决方案(例如,总是在晚上 2:00 之前)。脚本在每天 0:00 开始(cron)。

所以,脚本最多可以运行 2 小时。

但是,每天的数据都会发生变化,会增长,脚本需要更多的时间而不是 2 小时。当然,脚本应该解析整个数据。

在部分、镜像、多线程、云计算能力中运行这个脚本有一些解决方案吗?

【问题讨论】:

  • 您在这个问题中有两个相互矛盾的观点。您要求的代码将在两小时后停止您的脚本,但每天可能需要超过 2 小时。
  • @syntaqx 我不知道我的脚本会工作多久,但我希望整个工作应该在晚上 2:00 之前结束。
  • 没有完成怎么办?无论如何,可能有很多方法,但首先您必须定义哪种结果是可以接受的。而且,如上所述,您目前有两个相互冲突的要求!
  • 没有完成怎么办?无论如何,可能有很多方法,但首先您必须定义哪种结果是可以接受的。而且,如上所述,您目前有两个相互冲突的要求!

标签: php python multithreading cron


【解决方案1】:

我认为最终您可能正在寻找 PHP 的 set_time_limit($seconds) 函数。通过一点数学,您可以设置:

set_time_limit(2 * 60 * 60); // 2 (hours) * 60 (minutes) * 60 (seconds)

但是,您需要确保 PHP 可以实际上运行这么长时间,同时确保您的 max_execution_time() 也设置为至少相同的值。

此外,在 PHP 中设置这些值并不一定会覆盖您php.ini 的它们。根据您的环境,您还需要设置这些值,或者能够在运行时设置它们。

注意:请务必查看 php.net cmets,了解此功能的工作方式,因为它不是完全透明的。例如,sleep(n) 在执行时将被忽略,因此您的脚本将是 set_time_limit(n) + sleep(n) 运行时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多