递归PHP编程:结束时调用函数

时间:2018-11-07 20:06:29

标签: php function recursion

我正在尝试开发一个站点,该站点可以在一个循环中进行多次计算,根据服务器容量的不同,该过程从20秒到50-60秒不等。

当前的解决方案是,我每60秒用ajax调用一次此函数,但这在代码中是浪费的:如果计算在30秒后结束,则还有30秒的“等待时间”。

我想优化此代码,并在结束时简单地调用此函数。不需要返回值。

我尝试了以下解决方案,但不知何故,它不起作用:第一次运行后程序退出,不再再次调用该函数

<?php

  function Calculation() {

    // code that reads the input from a file
    // do the calculation stuff here that takes 20-60 secs

    Calculation(); // this should recall the function
  }

  Calculation(); // call for the first time

?>

1 个答案:

答案 0 :(得分:0)

谢谢您的投入,我已经找到了解决方案:

所以现在我将ajax刷新时间设置为30秒

<?php

  function Calculation() {

    $starttime = time();

    // code that reads the input from a file
    // do the calculation stuff here that takes 20-60 secs

    $endtime = time();

    if (($endtime - $starttime) > 30) { Calculation(); } 

    /* so basicly if the script runs more than 30 secs, 
    it won't wait the next refresh, just recalling itself. 
    If the script runs, the ajax won't reload the page as 
    mentioned. Once the program runtime will under 30 secs, 
    the basic ajax reload comes back. */

  }

  Calculation(); // call for the first time

?>