flush + nix

Тема в разделе "PHP", создана пользователем KillDead, 30 окт 2011.

Модераторы: latteo
  1. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Возникла проблема с буферизацией- есть сервер который не даёт срабатывать flush и иже с ним. Без настройки сервера flush не заработает. к настройке прав нету. И есть парсер который долго парсит. И мне нужно иметь актуальную информацию в браузере. Если кто реализовывал - подскажите как сделать?
     
  2. Soul :)

    Soul :) Постоялец

    Регистр.:
    22 мар 2007
    Сообщения:
    86
    Симпатии:
    9
    почитайте php.net, flush - не работает сам по себе.

    Чтобы нормально работало лучше делать:

    PHP:
    echo "<тут много пробелов>";
    ob_flush();
    flush();
    Тогда текст выведется. Если же в буфере недостаточно инфы, то команды эти не помогут, пока в буфере не накопиться побольше текста.

    //Подробнее в комментах к соответствующим функциям на пхп.нет
     
  3. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    нет. в некоторых случаях, например fastcgi- flush не будет работать. Ни дополнением длины буфера ни сбрасывания с помощью ob_
     
  4. Soul :)

    Soul :) Постоялец

    Регистр.:
    22 мар 2007
    Сообщения:
    86
    Симпатии:
    9
    Тогда можно имитировать очередь заданий.

    Т.е., например, нужно отпарсить 1000 страниц. Мы жмакаем в браузере по ссылке, Аяксом запрос идет на сервер, парсится 10 страниц и возвращается успешный код завершения. Процент выполнения увеличивается на 1% и автоматом идет запрос на следующую "порцию" парсинга.

    т.е.:
    1. Разбиваем задачу на много подзадач примерно одинакового объема.
    2. Выполнение следующей задачи инициирует клиентский ЯваСкрипт.