🔎

Динамічне відображення прогресу виконання скрипта PHP

Я виконую досить важкий скрипт, у якому понад 10000 ітерацій циклу. Скрипт виконується понад 10 хв. Під час виконання видно лише пуста сторінка веббраузера та іконка завантаження на активній вкладці. При цьому невідомо, скільки пройшло ітерацій і скільки часу ще триватиме виконання.

Підкажіть будь ласка, як мені динамічно відобразити прогрес виконання коду PHP?
jqueryphp
3 відповіді
  • Дмитро
    Одним з найпростіших варіантів є використання технології Jquery та проміжного файлу для збереження результату.

    Наприклад, виконуваний файл PHP буде містити цикл:
    <?php
    for ($i = 0; $i < 10; $i++) {
    // записуємо значення у файл
    file_put_contents($_SERVER['DOCUMENT_ROOT'].'/temp.txt', $i);
    sleep(1);
    }
    ?>
    При кожній ітерації у тимчасовий файл буде записуватися номер ітерації. Хоча можна записувати будь-які дані необхідні для виведення.

    Далі необхідно створити безкінечний цикл на JavaScript, який буде читати кожної секунди дані з файлу та виводити їх у вікно веббраузера. Для цього використаємо бібліотеку Jquery:
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script>
    var action = function(){
    $.ajax({
    url: 'temp.txt',
    dataType: 'text',
    success: function(data) {
    $('#result').html(data);
    }
    });
    setTimeout(action, 1000);
    };
    action();
    </script>
    <div id="result"></div>
    Ось тепер ви зможете переглядати в онлайн режимі результат виконання скрипта.
  • Єгор
    У мене є скрипт парсингу великої кількості інформації, який може виконуватися хвилин 10. Зараз я додав функцію запису результату виконання в текстовий файл, і окремим файлом за допомогою Jquery зчитую інформацію. Дуже простий та дієвий спосіб.
  • Ігор
    Дуже вам дякую, додав до свого скрипта рядок запису у файл номера ітерації та код JavaScript і успішно переглядаю прогрес.