Как перезагрузить страницу после регистрации содержимого с использованием неявного fluch

#javascript #reload #flush

#javascript #перезагрузка #сброс

Вопрос:

Вот моя проблема: у меня есть фрагмент кода, который проходит очередь, чтобы получить содержимое базы данных, и выводит в браузер с использованием неявного сброса, как только достигнут конец кода, мне нужно обновить страницу, чтобы обработать следующий элемент в очереди. Сначала я попробовал команду заголовка, но, очевидно, это не сработало, поскольку отображаемая страница содержит содержимое. Я также попытался добавить готовый документ javascript с location.reload(true); в нем, но он не срабатывает. Поэтому я предполагаю, что этот файл я хочу сделать рекурсивным, пока элементы находятся в очереди. Вот упрощенная версия файла удаления из очереди

 include( './dbcnn.php' );
// Autoloader
include( './autoloader.php' );

@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);
@ini_set('implicit_flush', 1);
for ($i = 0; $i < ob_get_level(); $i  ) { ob_end_flush(); }
ob_implicit_flush(1);

$startTime = time();
if ( $myQueue->size() > 0 ) {
    $is_locked = @mkdir(DOCROOT . '/logs/eclipse.lock');
}
if ( $is_locked === true amp;amp; $myQueue->size() > 0 ) {
    $action = "Started";
    echo $action . PHP_EOL . PHP_EOL;
    echo str_pad('',4096)."n";

    $item = $myQueue->bottom();
    $data = unserialize( $item, ['BackupQueue'] );
    $clientid = $data[ 'id' ];
   ...
        [run tasks echoing results as they finish]
        [remove from queue and remove locked flag file]
   ...

    // Tasks have finished get the next one item from the queue, if there is one.
    //header("Refresh:1");
    echo '<script> $( document ).ready( function() { location.reload( true ); } ); </script>';
}
 

Как я могу просто перезагрузить страницу, когда все действия завершены? Этот раздел кода в настоящее время привязан к cron, который выполняется каждую минуту, но это кажется расточительным, поскольку очередь тратит 66% дня на пустую (она выполняет некоторые ночные задачи)

Как я уже сказал, он доходит до конца и останавливается, и если при использовании команды header он сообщает, что заголовки уже отправлены, тег script присутствует в содержимом страницы. Я, конечно, понимаю, что мог бы поместить все это в цикл while или что-то в этом роде, но почему это не работает? Я полагаю, что размещение перезагрузки в разделе заголовка просто перезагрузит страницу без запуска задач (из-за сброса?)

Спасибо

** РЕДАКТИРОВАТЬ ** Решение, приведенное ниже из mrcoder, сработало (окно.location.reload();)

Комментарии:

1. window.location.reload() не сработало? пожалуйста, попробуйте удалить $( document ).ready( function() .

2. Ах да, используя полное окно. location.reload() сработал, тогда как location.reload() не сработал

3. Отлично! Счастливого кодирования.