Récursif PHP Programmation: rappeler une fonction quand elle se termine

voix
0

Je suis en train de développer un site qui fait plusieurs calculs dans une boucle, et il faut de 20 secondes jusqu'à 50-60 secondes, en fonction de la capacité du serveur.

La solution actuelle est que j'appelle cette fonction dans toutes les 60 secondes avec ajax, mais cela est une perte dans le code: si le calcul se termine en 30 secondes, il y a 30 secondes plus « temps d'attente ».

Je voudrais optimiser ce code et rappeler simplement cette fonction une fois qu'il se termine. Aucune valeur de retour est nécessaire.

J'ai essayé la solution suivante, mais en quelque sorte il ne fonctionne pas: après la première exécution du programme se ferme, ne pas appeler à nouveau la fonction

<?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

?>
Créé 07/11/2018 à 20:06
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Merci pour les entrées gars, je l'ai déjà trouvé une solution:

Alors maintenant, je mis le temps de rafraîchissement ajax à 30 sec

<?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

?>
Créé 07/11/2018 à 20:52
source utilisateur

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