php не обновляет страницу до завершения загрузки

#php #web-crawler

#php #веб-сканер

Вопрос:

Я хочу написать скрипт обхода с помощью php, и это необходимо для отображения страниц, которые индексируются онлайн. однако php не обновляет страницу в режиме реального времени, иногда он записывает несколько эхо-сообщений вместе и ждет завершения загрузки, иногда на странице ничего не отображается до завершения загрузки.

Вот пример того, о чем я говорю:

 <?php
echo '1<br>';
sleep(2);
echo '2<br>';
sleep(2);
echo '3<br>';
sleep(2);
echo '4<br>';
?>
  

Я попробовал на wamp и lamp, и результаты были одинаковыми. есть ли какой-либо способ показывать эхо-сигналы в реальном времени?

примечание: Я нашел онлайн-сканер, у которого есть эта функция.

Ответ №1:

Попробуйте использовать flush() .

Другой, более ручной способ — многократно запрашивать сервер через ajax или используя что-то вроде Comet.

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

1. спасибо @chelmertz, это потрясающе. Я нашел то, что именно мне нужно: se.php.net/manual/en/function . flush.php#58917

2. @Burak Emre: Круто, я никогда такого раньше не видел. Спасибо 🙂

Ответ №2:

Я предлагаю вам использовать некоторый JavaScript для самостоятельного обновления страницы, и затем его можно вызывать после каждой процедуры для запуска необходимой функции php.

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

1. да, я знаю, но это бесполезный способ сделать это, потому что я должен сохранять результаты для каждого URL.

2. Позвольте мне повторить мое утверждение, используйте javascript для обновления страницы и вызовите другую страницу php, которая выполняет работу по сохранению результата для каждого URL..

3. Я имею в виду, что это может привести к перегрузке процессора, и другой способ, который использует функции php для решения этой проблемы, быстрее, чем использование javascript. Если я создам sitemap.xml файл, лучший способ — записать файл после завершения операции. Если вы имеете в виду, что мой английский неправильный, я принимаю это. 🙂