Рекурсивные PHP программирование: вспомнить функцию, когда она заканчивается

голоса
0

Я пытаюсь разработать сайт, который делает несколько вычислений в одном цикле, и это занимает от 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

?>
Задан 07/11/2018 в 20:06
источник пользователем
На других языках...                            


1 ответов

голоса
0

Спасибо за входы ребята, я уже нашел решение:

Так что теперь я установил АЯКС время обновления до 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

?>
Ответил 07/11/2018 в 20:52
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more