分多个阶段或多次自动化脚本
Posted
技术标签:
【中文标题】分多个阶段或多次自动化脚本【英文标题】:automating a script in several stages or several times 【发布时间】:2012-04-05 05:52:38 【问题描述】:我需要每晚运行一个脚本,通过 SOAP 连接到 Web 服务,最多返回 45000 条记录。
我可以设置返回多少条记录,在我达到 max_execution_time 限制之前,似乎限制是 1000 条。
自动化此脚本以获取所有 45000 条记录的最佳方法是什么?肯定有比做 45 个 cron 作业更好的方法吗?
【问题讨论】:
您可以为该脚本增加max_execution_time
。
远远超过默认的 30 秒,它会耗尽 memory_limit。我正在尝试找到一个不需要我将这些设置提高到荒谬水平的答案
命令行 php 通常禁用时间限制。不要通过浏览器运行脚本。任何网络故障,或按 ESC 键,浏览器都会终止连接,脚本将被关闭。
【参考方案1】:
这应该会有所帮助 http://php.net/manual/en/function.set-time-limit.php
【讨论】:
【参考方案2】:如果您希望它每晚自动运行,那么单个 cron 作业绝对是可行的方法。您可以采取两种基本方法:您可以运行一个查询一个又一个查询的作业,每次提取 x 条记录,直到提取所有记录,或者您可以让一个作业一遍又一遍地运行每隔几分钟,每次提取 x 条记录。两者都有优点和缺点,但第一个选项可能更容易实现。
为此,我建议您使用set_time_limit() 提高时间限制。这应该是非常高的值,以便您的流程有时间完成,或者如果您没有限制,则只需 0。如果你也有记忆问题,那么我每次都会拉得更少。如果您说最大值为 1000,则考虑 500。让您的应用程序一次又一次地循环提取 500 条记录,直到完成。您可能还想使用sleep() 在每次拉取记录之间加入一点延迟。
【讨论】:
以上是关于分多个阶段或多次自动化脚本的主要内容,如果未能解决你的问题,请参考以下文章