Bonjour,
Comment faire une redirection (avec Header) et attendre la fin de l'exécution du script appelé avant de continuer (un peu comme avec ajax) ?
Version imprimable
Bonjour,
Comment faire une redirection (avec Header) et attendre la fin de l'exécution du script appelé avant de continuer (un peu comme avec ajax) ?
je n'ai pas compris. tu parles de quel script et tu veux continuer quoi ?
C'est peut-être plus simple à expliquer avec un exemple ...
Code:
1
2
3
4
5
6
7
8
9 <?php //script1.php ... header("Location:script2.php"); ... <<<< exécution quand script2.php est fini ?> <?php //script2.php ... ?>
La fonction register_shutdown_function permet de faire ce que tu souhaites:
Code:
1
2
3
4
5
6 register_shutdown_function('doRedirect'); function doRedirect() { header('ocation: url'); exit; } // le code va s'exécuter, la fonction doRedirect sera appelé à la fin du script
À ce que je sache, header() n'arrête pas le script en cours et exécute ce qu'il y a après cette fonction...
Je viens de tester une page qui insère quelque chose dans la BDD après l'appel de la fonction header(), et ça fonctionne très bien.
C'est bien ce que je veux éviter !
L'idée est de faire l'appel dans une boucle ...
Je n'ai pas essayé mais est-ce la solution:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php //script1.php ... while (condition) { header("Location:script2.php"); ... <<<< exécution quand script2.php est fini } ... ?> <?php //script2.php ... ?>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <?php //script1.php register_shutdown_function('doRedirect'); function doRedirect() { header('Location:script2.php'); exit; } ... while (condition) { doRedirect(); ... <<<< exécution quand script2.php est fini } ... ?> <?php //script2.php ... ?>