0

我制作了一个从 Web 服务检索 XML 内容的脚本。该过程需要每周运行一次,但脚本本身需要重新运行大约 180 次才能完成该过程。脚本的每次运行大约需要 3-8 分钟。我希望它在每次完成后重新运行大约 5 秒。

我目前的解决方案是:

  • Windows 的任务调度程序每周打开一次 php 页面。
  • 当脚本运行并完成时,javascript 使页面在完成后 5 秒重新启动。
  • 当脚本最后一次运行时,它会删除页面的重新加载以使其停止。

这个解决方案的问题是它每周都会打开一个新的浏览器窗口。有没有什么好的替代方法可以做到这一点而不必手动关闭浏览器?

脚本重新运行的原因是由于php server max limit的脚本超时设置,以及每次运行后查看状态是否发生错误的可能性。

我没有使用 cron,因为它需要进行非常多的轮询才能让进程在上次运行的 5 秒内启动。对于脚本的每周启动,我认为只要脚本使用 javascript 重新运行自身,它就不会工作?

4

1 回答 1

0

使用 PHP:

<?php

// increase the maximum execution time to 43200 seconds (12 hours)
set_time_limit(43200);

function runTask() {
    static $cycles = 0;

    // do whatever you need to do

    // Increments cycle count then compares against limit
    if ($cycles++ < 180)  {
        sleep(5);  // wait five seconds
        runTask(); // run it again
    }
}

runTask(); // fire up the loop

或者,如果你是 Javascript 的粉丝......

使用 node.js:

var cycles = 0;

function runTask() {
  // do whatever you need to do

  // Increments cycle count then compares against limit
  if (cycles++ < 180) {
    setTimeout(runTask, 5000); // run again in 5000 milliseconds
  }
}

runTask(); // fire up the loop

两种解决方案都将在每次迭代完成 5 秒后再次运行该函数。

只需让您的任务运行器直接执行任一脚本即可;不需要浏览器。

于 2014-11-05T10:17:16.290 回答