Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Буферизация вывода Php (https://forum.antichat.xyz/showthread.php?t=79348)

prescott 01.08.2008 18:32

Буферизация вывода Php
 
Задача следующая:

Есть скрипт импорта БД пользователей. Импорт осуществляется из XML каталога, причем несколько минут.

Не могу сделать так чтобы скрипт вывел в браузер СРАЗУ какой либо текст, например "Идет импорт БД, ждите...", потом спокойно импортировал базу и вывел результат работы.

Обычно же PHP дожидается конца работы скрипта и лишь потом выводит всю страницу разом.

Баловался я с ob_end_flush() и т.д., но я уже видимо переработал, а доделать сегодня надо :mad:

Есть у кого рабочий пример? Вариант с аяксом и фреймами просьба не предлагать, результата нужно добится одним скриптом.

5triker 01.08.2008 19:03

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

prescott 01.08.2008 20:04

Знаю я слава богу что пхп серверный язык) НО видел я пхп скрипт который без джава скрипта выводил построчно данные в браузер, а вот реализации не знаю...

razzzar 01.08.2008 20:55

Код:

echo 'some text';
flush();
ob_flush();

эти действия выведут сразу в браузер строку 'some text'

slav0nic 02.08.2008 00:14

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

c411k 15.01.2009 11:06

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);
}


bombeg 15.01.2009 11:19

проще сделать ява скриптом... добавить в кнопку

Код HTML:

onclick="document.getElementById('progress').style.display = '';"

<div id="progress" style="display: none;">Идет добавление</div>


Mixon 15.01.2009 15:51

Есле те надо лишь безсмысленный вывод слова,просто,то можно сделать вопше так

<?php
echo "Идет импорт баз,подождите!";
?>
<?php
твой код скрипта....
?>

тогда сервер обрабатывает ето как два роздельных скрипта,и тот что первый,выполнится,выведетс я результат,тогда второй будет выполнятся....Есчё есть схожая ф-цыя,

ob_implicit_flush(0);

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

<?php
ob_implicit_flush(0);
echo "Импор идет...";

твой код

?>

Так в начале загрузки выведется текст,скрипт будет выподнятся более как по очереди,с начала ето выводится,потому что тут обрабаотывать ненадо,потом будет обрабатяватся дальше и выводится....


Время: 06:28