Я запускаю PHP-скрипт, который обращается к некоторым базам данных MySQL, и мне нужно подождать несколько секунд, пока предыдущий скрипт не введет всю информацию в базу данных. Время ожидания не должно быть длинным, но на всякий случай, когда сервер работает медленно, я использую sleep (10), чтобы подождать 10 секунд, прежде чем выполнять скрипт. Я хотел отобразить сообщение «please wait», пока он ждет 10 секунд, но, к сожалению, это сообщение отображается только после того, как 10 секунд уже завершены. Это то, как я собираюсь на это:
ob_start(); echo "Please wait while your invoice is being created... </br>"; ob_flush(); sleep(10); ob_end_clean(); echo "Success...";
Основываясь на некоторых исследованиях в Интернете, у меня создалось впечатление, что ob_flush () выводит текст до 10 секунд, а затем ob_end_clean () удалит ранее напечатанный текст, но вместо этого я получаю то, что оба текста после 10 секунд, и первый текст не стирается. Вы, ребята, знаете, что я здесь делаю неправильно?
Вы не можете редактировать все, что вы уже выдали с помощью PHP, для чего потребуется перезагрузка страницы. ob_flush просто выводит буфер и опустошает его. ob_end_clean () останавливает буферизацию вывода, что позволяет вам нормально выводить.
Чтобы скрыть отображаемый текст, вы должны вывести javascript, чтобы скрыть ранее визуализированный текст (желательно, завернутый в div или так для удобства выбора).