Ho fatto una prova. Non so cosa vuoi fare di preciso quindi è solo a scopo illustrativo.
Clicca sul bottone Start (apre una pagina php) che cicla su se stessa finché non clicchi su Stop.
A quanto pare lo sleep(1) è importante (o ogni codice che impedisce l'invio immediato dello header).
test389a.php
Codice PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php
session_start();
if (isset($_POST['submit'])) {
if ($_POST['submit'] == 'Stop') {
$_SESSION['pippo'] = '1';
} else {
$_SESSION['pippo'] = '0';
}
} else {
$_SESSION['pippo'] = '0';
}
?>
<html>
<head>
<title>Untitled</title>
</head>
<body>
Stato della session :
<?php
print $_SESSION['pippo'];
?>
<form action="test389b2.php" method="post" target="_blank">
Apre una nuova pagina :<input type="submit" name="submit" value="Start" />
</form>
<form action="test389a.php" method="post">
Ferma lo script della pagina aperta : <input type="submit" name="submit" value="Stop" />
<br/>
Risetta lo stato della session a 0 :<input type="submit" name="submit" value="Reset" />
</form>
</body>
</html>
test389b2.php
Codice PHP:
<?php
error_reporting(E_ALL);
session_start();
$loop = true;
if (isset($_SESSION['pippo'])) {
if ($_SESSION['pippo'] == '1') {
$loop = false;
}
}
if ($loop) {
sleep(1);
header('Location: test389b2.php');
exit;
}
print "Finito";