То, что вы хотите сделать, невозможно (ну, не так, как вы думаете).
Если бы мне пришлось сделать это как абсолютное требование (даже если оно воняет плохим дизайном), я бы сделал это так:
Где бы ни находился ваш номер в исходном выходном файле, оберните его в div или span и присвойте ему уникальный идентификатор.
Я бы тогда использовал переменную сеанса для вашего счетчика цикла.
Наконец, я бы использовал jQuery с плагином таймеров для отключения с интервалом в 1 или 2 секунды. Внутри таймера вы должны вызвать файл .php в фоновом режиме, который просто возвращает значение переменной сеанса.
Вот немного кода для демонстрации:
(отредактировано для уточнения на основе комментариев ниже)
Вот рабочий пример:
<?php
// main_page.php
session_start();
$_SESSION['loop_count'] = 0;
?>
<html>
<head>
<title>Background Updating Example</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="PATH_TO_YOUR_SCRIPTS/timers.jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
url: 'exec_loop.php',
success: function(data) {
$('#status_message').html("Loop started...");
}
});
$(document).everyTime(1000, function() {
$.ajax({
url: 'get_counter.php',
success: function(data) {
$('#counter_text').html(data);
}
});
});
});
</script>
</head>
<body>
The loop has executed <span id='counter_text'>0</span> times.
</body>
</html>
Затем в файле get_counter.php просто сделайте что-то вроде этого:
<?php
// get_counter.php
session_start();
echo $_SESSION['loop_count'];
?>
Теперь для файла цикла
<?php
// exec_loop.php
session_start();
for ($i = 0; $i < 50000000; $i++) {
$_SESSION['loop_count']++;
}
?>
Сохраните эти три файла, и вы получите желаемый результат.