Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: почему вывод ECHO происходит порциями?
Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2011
Помог: 0 раз(а)
Приветствую
есть парсер, при работе которого выводится служебная информация о его работе - вывод примитивный echo внутри цикла.
По идее, при каждом проходе цикла должно выводится сообщение, однако выводится порциями по десятку строк.
Скрипт достает данные из база и пишет в базу. При этом внутри цикла есть sleep на 1-3 секунды для простенькой защиты от обнаружения ботов, но скрипт намертво вешает сайт - пока не отработает, сайт недоступен.
Подскажите, в какую сторону смотреть и что читать? ob_end_clean пробовал, если это вообще имеет к этому отношение...
Спасибо!
SAD
Отправлено: 27 Марта, 2011 - 20:42:15
Постоянный участник
Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009 Откуда: Днепропетровск, Украина
Помог: 75 раз(а)
Алекс2011 пишет:
ob_end_clean
ройте в этом направлении
OrmaJever
Отправлено: 27 Марта, 2011 - 21:16:03
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Да для тогочто бы echo отдавал всё за один раз нужна буферизация
Алекс2011 пишет:
При этом внутри цикла есть sleep на 1-3 секунды для простенькой защиты от обнаружения ботов
А вот это не понятно... Чё этоза защита?
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Okula
Отправлено: 27 Марта, 2011 - 21:27:29
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Алекс2011 пишет:
При этом внутри цикла есть sleep на 1-3 секунды для простенькой защиты от обнаружения ботов, но скрипт намертво вешает сайт - пока не отработает, сайт недоступен.
Функция sleep() нужна для того чтобы организовать задержку выполнения сценария.
Например при парсинге это удобно тем, чтобы не нагружать внешний ресурс запросами в цикле, чтобы сайт успел отдавать информацию. Достаточно и полсекунды поставить.
Алекс2011
Отправлено: 27 Марта, 2011 - 21:59:05
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2011
Помог: 0 раз(а)
OrmaJever пишет:
При этом внутри цикла есть sleep на 1-3 секунды для простенькой защиты от обнаружения ботов
А вот это не понятно... Чё этоза защита?
при запросах как из пулемета срабатывает "Ой а не робот ли это?" Если одиночными - то парсинг не прерывается. 0,5 пробовал ставить - палюсь. (Добавление)
OrmaJever пишет:
Да для тогочто бы echo отдавал всё за один раз нужна буферизация
мне как раз не надо "за один раз" - мне надо чтобы информация выводилать при каждом вызове эха, т.е. строка в браузере появлялась каждые 2-3 секунды, а не 50 через минуту.
спасибо
Мелкий
Отправлено: 27 Марта, 2011 - 22:19:59
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
а в чём плюс такой защиты? втом что сервер сам себя нагружает? ПОлучатся запустил скрипт и он в цыкле будет шуршать как шуршик
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Алекс2011
Отправлено: 27 Марта, 2011 - 23:01:30
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2011
Помог: 0 раз(а)
OrmaJever пишет:
а в чём плюс такой защиты? втом что сервер сам себя нагружает? ПОлучатся запустил скрипт и он в цыкле будет шуршать как шуршик
плюс в том, что сайт, который парсят, не отключает выдачу. А другими средствами защиты я, увы, не владею пока.
А разве sleep создает допнагрузку? возможно, я ошибался, когда считал, что это просто пауза выполнения скрипта с нулевой загрузкой процессора?
OrmaJever
Отправлено: 27 Марта, 2011 - 23:50:31
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
да это пауза, но после паузы же цыкл идёт дальше. Тоесть один раз обратился к скрипту и закрыл сайт, а скрипт всё работает А если таких ботов будет хотябы 100?
Я конешно не видел весь скрипт такой защиты но уверен что есть лутшее решение!
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
JustUserR
Отправлено: 28 Марта, 2011 - 01:06:05
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Алекс2011 пишет:
По идее, при каждом проходе цикла должно выводится сообщение, однако выводится порциями по десятку строк.
В качестве возможной причины осуществления некорректного функционирования предполагаемого PHP-приложения, заключающегося в проведении несоответственной транспортировки сгенерированной группы информационных полей, является автоматическое использование механизма буферазации потока данных, активация действенных составляющих элементов которого производится в дифферентном пониженном базовом элементном уровне трактования; в качестве допустимого варианта решения обозначенной задачи, допустимо использование техологий FastCGI или NPH-CGI соответственно
Алекс2011 пишет:
А разве sleep создает допнагрузку? возможно, я ошибался, когда считал, что это просто пауза выполнения скрипта с нулевой загрузкой процессора?
В действительности осуществление использование предполагаемого функционального объекта, позволяющего обеспечивать приведения текущего локального исполняемого потока в неактивное состояние, предполагает осуществление поддержания канала взаимодействия с целевым инициализирующим родительским процессом web-сервера, обеспечивающим выполнения трансфера информационных полей
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Алекс2011
Отправлено: 28 Марта, 2011 - 01:27:06
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2011
Помог: 0 раз(а)
JustUserR пишет:
В действительности осуществление использование предполагаемого
...что-то с окончаниями не так, а вообще - спасибо. (Добавление)
SAD пишет:
ob_end_clean
ройте в этом направлении
решение вывода в реальном времени: ob_end_clean ();echo "...";flush ();
спасибо.
вопрос с зависанием сайта пока остается открытым...
JustUserR
Отправлено: 28 Марта, 2011 - 01:56:03
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.