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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> промежуточный результат 
:(
    Опции темы
bazzjr
Дата 19.11.2009, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет.

Вообщем порывшись и поразмышляв, так и не нашел ответа.


Вопрос в следующем:
Есть к примеру такой скрипт
Код

$query = mysql_query("SELECT * FROM `blabla` LIMIT 999999 ",$connect);
for($i=0 ; $i <= mysql_fetch_array($query ); $i++){
    print $i;
}


Как сделать так, что-бы результат выводился не ВЕСЬ СРАЗУ после того как FOR отработает, а выводился во время работы for, т.е. последовательно?

Т.е. сработала print $i и сразу же появился результат, и пять сработала print $i и опять мы видим результат тут же...



Это сообщение отредактировал(а) bazzjr - 19.11.2009, 08:05
PM MAIL ICQ   Вверх
MoLeX
Дата 19.11.2009, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



bazzjr, тебе необходимо ориентироваться на AJAX


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
bazzjr
Дата 19.11.2009, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(MoLeX @ 19.11.2009,  08:50)
bazzjr, тебе необходимо ориентироваться на AJAX

Немного поподробней можно?

С ajax я на ты, но как применить его?

Если не затруднит приведите пример...
PM MAIL ICQ   Вверх
MoLeX
Дата 19.11.2009, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



_http://forum.dklab.ru/viewtopic.php?t=34661
_http://forum.dklab.ru/viewtopic.php?p=172547


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 19.11.2009, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Зависит от того, для чего это нужно.
Если бы увидеть реальный пример, а не искусственное получение из сферической таблицы мильёна строк, тогда можно было бы ответить более конкретно.
PM MAIL   Вверх
bazzjr
Дата 19.11.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Ипатьев @ 19.11.2009,  09:53)
Зависит от того, для чего это нужно.
Если бы увидеть реальный пример, а не искусственное получение из сферической таблицы мильёна строк, тогда можно было бы ответить более конкретно.

Нужно следующее:

Имеем функцию, в которой происходит считывание данных(блоками) из источника, и некий парсинг этих данных...
Нужно чтобы в определенный момент(например после блока считанных и отпарсированных данных) происходил вывод информации на экран в браузер, после этого продолжилось бы считывание и парсинг данных дальше...

Все это работает на РНР, никаких посторонних скриптов не используется.

По ссылкам выше, посмотрю - спасибо!
PM MAIL ICQ   Вверх
Ипатьев
Дата 19.11.2009, 14:00 (ссылка) |   (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вопрос: Если бы увидеть реальный пример.

Ответ: Имеем функцию, в которой происходит считывание [некоторых] данных(блоками) из [неизвестного] источника, и некий парсинг этих данных...

спасибо.
PM MAIL   Вверх
sad8c
Дата 20.11.2009, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



в данной ситуации так или иначе необходима группа последовательных однотипных ajax-запросов. Первым запросом можно узнать количество записей в выборке. Исходя из полученного клиентом количества, можно в браузере же рассчитать соответствующее необходимое количество запросов для последовательного показа запрашиваемых данных. Т.е. после получения кол-ва записей (например 1000), делаем запрос на выборку с лимитом - 0, 10. Показываем  первые 10, далее 10, 10, затем 20,10 и т.д. до 990,10. Это один вариант.

Второй вариант - первый запрос запускает скрипт для выборки, также для получения общего количества. Далее запущенный скрипт в цикле записывает записи из БД во временные файлы пакетами, скажем, по 10 записей в любом удобном виде (json или xml, или даже csv), именуя файлы соответствующими именами, позволя.щими идентифицировать содержащийся в нем пакет записей. Ну а ajax последовательно делает запросы на эти временные файлы. После запроса на последний файл, посылается ajax-запрос на сервер для удаления этих файлов.

Что-то в этом роде. 

Но на мой взгляд первый вариант более грамотен. Хотя бы потому, что нет риска засорения файловой системы.

Наверняка, если поразмышлять, то в пределах этих примеров можно придумать множество различных вариаций.
PM MAIL   Вверх
awers
Дата 20.11.2009, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



ob_flush() ?
PM MAIL WWW ICQ Skype   Вверх
bazzjr
Дата 20.11.2009, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



хммм... sad8c  возможно ты прав, хотя бы в том, что есть множество вариантов... Дело в ом что такой вид запросов будет не только к базе, но и просто к данным из переменных массива, поэтому второй варик более близок на первый взгляд...

awers мне кжется это не то что нужно, хотя от примера бы не отказался... 

P.S.  я так то думал это не проблема сделать подобное, а оказывается этим мало кто занимался(если вообще занимался)...
PM MAIL ICQ   Вверх
capitan
Дата 20.11.2009, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



bazzjr, Как уже сказали подойдет простой вывод буфера flush();

Цитата

awers мне кжется это не то что нужно, хотя от примера бы не отказался... 


А разве так трудно зайти на http://php.net и посмотреть там?  http://ru2.php.net/manual/en/function.flush.php там даже примеры есть.

Код

<?php
ob_start();

for($i=0;$i<70;$i++)
{
    echo 'printing...<br />';
    ob_flush();
    flush();

    usleep(300000);
}

?>


Цитата

Но на мой взгляд первый вариант более грамотен. Хотя бы потому, что нет риска засорения файловой системы.


1000 записей вывод по 10 итого нужно сделать 100 запросов.  Очень интересное решение. Второе решение ещё интереснее. Если запустить данный скрипт последовательно, несколько раз или прервать выполнение что произойдет?

Это сообщение отредактировал(а) capitan - 20.11.2009, 02:09
PM MAIL WWW ICQ   Вверх
sad8c
Дата 20.11.2009, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

1000 записей вывод по 10 итого нужно сделать 100 запросов.  Очень интересное решение.


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

Цитата

Второе решение ещё интереснее. Если запустить данный скрипт последовательно, несколько раз или прервать выполнение что произойдет?


Именно поэтому я и указал на неэтичность данного решения, т.к. оно грозит засорением файловой системы. Но на мой взгляд, возможны задачи, в которых была бы удобной ситуация использования файлов xml/json/csv в качестве буфера, при этом разумеется снабдив систему нехитрым сборщиком мусора. cron, events в помощь. Мало того, абсолютно не составляет никакого труда оградиться и от намеренной перегрузки файловой системы. Все зависит от задачи и логики её реализации. Просто цель всегда должна оправдывать средства)
PM MAIL   Вверх
capitan
Дата 21.11.2009, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

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


Нет не нужно. Достаточно просто выводить результат из буфера на экран. А не нагружать систему никому не нужными запросами.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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