#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 файл, лучший способ — записать файл после завершения операции. Если вы имеете в виду, что мой английский неправильный, я принимаю это. 🙂