Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод во время выполнения скрипта 
:(
    Опции темы
taral
Дата 23.9.2010, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Напомните пожалуйста функцию которой выставляется параметр для сервера что бы сразу посылать информацию в вывод и не ждать когда скрипт закончит выполнение.
PM MAIL   Вверх
bars80080
Дата 23.9.2010, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



flush(), ob_flush() ?
PM MAIL WWW   Вверх
taral
Дата 23.9.2010, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Мне нужно нечто подобное
Код

for($i=0;$i<60;$i++) {
    echo $i;
    sleep(1);
}

При обычной работе скрипта он будет работать минуту и потом выведет сразу 1234567....
А мне нужно что бы при запросе вывело сразу 1 потом еще и 2 потом 3 и т.д. что бы я в реальном времени видел как появляются цифры. Помню что вызывается функция в начале работы скрипта. Аналогично как указываем бесконечное выполнение с помощью set_time_limit(0); и потом вывод происходит сразу как делаем есho а не ждет когда закончится выполнение

Это сообщение отредактировал(а) taral - 23.9.2010, 19:39
PM MAIL   Вверх
IgorIV
Дата 23.9.2010, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Однозначно что-то сказать трудно. Если ты где-то видел скрипт, это не значит что все о нем знают. Судя по описанию, там не только PHP, но и что-то другое есть (JS?). 
PM MAIL   Вверх
taral
Дата 23.9.2010, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Нет. Та функция на сколько я понимаю в конфиг сервера выставляет параметр для вывода во время выполнения вот и все. Тут нету никаких левых технологий и никакого js. Эта функция входит в базовый пакет сервера апач. Завтра посмотрю по домашним библиотекам, если найду выложу сюда.
PM MAIL   Вверх
enoff
Дата 23.9.2010, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



Цитата(bars80080 @  23.9.2010,  20:25 Найти цитируемый пост)
flush(), ob_flush() ? 

taral, с богом?
Код


ob_start();
for($i=0;$i<60;$i++) {
    echo $i;
    ob_flush();
    flush();
    sleep(1);
}

PM MAIL ICQ Skype GTalk   Вверх
ksnk
Дата 23.9.2010, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



enoff, По слухам, для некоторых броузеров нужно вывести не менее 512 байт, чтобы они начали их рендерить. Так что можно еще пробелов добить достаточное количество.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Muerto
Дата 23.9.2010, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



enoff - пример не пашет как человек просит, а разом выдает smile 


--------------------
user posted image
PM MAIL   Вверх
enoff
Дата 23.9.2010, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



 smile 
можно прочитать пост выше от ksnk, зайти на php.net и почитать ман по функции, а точнее комментарии (очень полезная вещь, особенно применительно к php.net) и можно там обнаружить советы делать вначале скрипт подобные вещи, если нужна отправка данных без буферизации.
Код

for() //...
    echo "\n";


ksnk, я помню под виндой с этим мучался, не знал что делать smile 
под дебианом в айсвизеле все впорядке, потому и не учел, когда пост писал =(
PM MAIL ICQ Skype GTalk   Вверх
ksnk
Дата 23.9.2010, 22:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



enoff, лучше добивать комментариями. Что-то вроде
Код

echo "<!--".str_repeat(" ",512)."-->";
 меньше побочных эффектов. Переводы строк сливаются в пробел и появится лишний пробел между символами.


Это сообщение отредактировал(а) ksnk - 23.9.2010, 22:00


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
IgorIV
Дата 23.9.2010, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



taral, можно узнать зачем тебе это надо?
PM MAIL   Вверх
enoff
Дата 23.9.2010, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



Цитата(ksnk @  23.9.2010,  23:00 Найти цитируемый пост)
Переводы строк сливаются в пробел и появится лишний пробел между символами.

спасибо, не знал.

IgorIV, мгновенный вывод может понадобиться, например, при обработке большого количества данных, если скрипт очень сильно растянут по времени. Мне так удобно, риал-тайм наблюдаешь вывод, пока скрипт работает, смотришь косяки сразу.
PM MAIL ICQ Skype GTalk   Вверх
IgorIV
Дата 23.9.2010, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Код

<?php   
   $string = 'При обычной работе скрипта он будет работать минуту и потом выведет сразу 1234567....
А мне нужно что бы при запросе вывело сразу 1 потом еще и 2 потом 3 и т.д. что бы я в реальном времени видел как появляются цифры. Помню что вызывается функция в начале работы скрипта. Аналогично как указываем бесконечное выполнение с помощью set_time_limit(0); и потом вывод происходит сразу как делаем есho а не ждет когда закончится выполнение';

$t = microtime(true); 
ob_start();
for($i=0;$i<600;$i++) {
    
    echo '<br />'.$i;
    echo ' - '.(microtime(true)-$t); 
    echo ' - <!-- '.$string.$string.$string.$string.' --><br />';
    ob_flush();
    flush(); 
    
    sleep(5);
}

?>

Выводит сразу по 2 записи. Когда было по одной $string выводило по 4.


enoff, без конкретного примера - не понимаю...
PM MAIL   Вверх
taral
Дата 24.9.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



enoff спасибо. Ваш пример работает
Код

ob_start();
for($i=0;$i<60;$i++) {
    echo $i;
    ob_flush();
    flush();
    sleep(1);
}

Как видим мы включаем буферизацию вывода и вручную выводим текст из него. Решение работает но приходится писать много дополнительного кода. Конечно можно вынести все это в отдельную функцию и использовать. Да и работа кода держится на функции flush которая отправляет данные из буфера клиенту. Уже тут видно что можно же просто отправлять данные клиенту
Точно можно в конфиг сервера выставить что бы он так и делал. Делается это одной функцией которая вызывается в начале скрипта. И я все не могу вспомнить ее название =) И это меня мучает. Тут уже дело даже не в решении задачи. Просто хочется вспомнить эту функцию. Вот и решил поделится мыслями.
Спасибо всем кто откликнулся и откликнется. Быть может выйдет решить задачку.
PM MAIL   Вверх
enoff
Дата 24.9.2010, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



taral, можно повесить callback обработчик на буферизацию и в нем скидывать все из буфера (сам не проверял, возможно вечером посмотрю).
PM MAIL ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.