Задача следующая: Есть скрипт импорта БД пользователей. Импорт осуществляется из XML каталога, причем несколько минут. Не могу сделать так чтобы скрипт вывел в браузер СРАЗУ какой либо текст, например "Идет импорт БД, ждите...", потом спокойно импортировал базу и вывел результат работы. Обычно же PHP дожидается конца работы скрипта и лишь потом выводит всю страницу разом. Баловался я с ob_end_flush() и т.д., но я уже видимо переработал, а доделать сегодня надо Есть у кого рабочий пример? Вариант с аяксом и фреймами просьба не предлагать, результата нужно добится одним скриптом.
пхп выполняется на сервере и только потом передается в браузер , сомневаюсь что можно обойтись без аякса и тп. вещей
Знаю я слава богу что пхп серверный язык) НО видел я пхп скрипт который без джава скрипта выводил построчно данные в браузер, а вот реализации не знаю...
может лучше использовать кеш в данном случае? на дёргать каждый раз базу попусту, особенно если данные не именились с момента последнего запроса...
PHP: <?php @ini_set('output_buffering',0); @set_time_limit(0); @ob_implicit_flush(1); function myflush($timee) { if(ob_get_contents()) { ob_flush(); ob_clean(); flush(); usleep($timee); } } for($n = 0; ++$n <= 1111111;) { echo $n.'<br>'; myflush(1); }
проще сделать ява скриптом... добавить в кнопку HTML: onclick="document.getElementById('progress').style.display = '';" <div id="progress" style="display: none;">Идет добавление</div>
Есле те надо лишь безсмысленный вывод слова,просто,то можно сделать вопше так <?php echo "Идет импорт баз,подождите!"; ?> <?php твой код скрипта.... ?> тогда сервер обрабатывает ето как два роздельных скрипта,и тот что первый,выполнится,выведется результат,тогда второй будет выполнятся....Есчё есть схожая ф-цыя, ob_implicit_flush(0); есле ето в начала скрипта положить,то тогда будут выводится данные по мере загрузки,например так <?php ob_implicit_flush(0); echo "Импор идет..."; твой код ?> Так в начале загрузки выведется текст,скрипт будет выподнятся более как по очереди,с начала ето выводится,потому что тут обрабаотывать ненадо,потом будет обрабатяватся дальше и выводится....