Codeigniter 2.x - Ехо изход като скрипт работи

Опитвах се да накарам codeigniter да извежда текст, тъй като скриптът работеше, но не можах да го накарам да работи. Имам търсене тук и Google и видях да използвам ob_end_flush(); и flush(); и също заедно с добавянето на още байтове, така че браузърът да може да изведе. Но нищо от това не работи в CI 2.x. Ако някой е имал късмет с това, благодаря предварително

опитах

function test()
{
    ob_end_flush();
        echo "test1";
    ob_start();
    sleep(3);
    ob_end_flush();
        echo "test1";
    ob_start();
    sleep(3);
    ob_end_flush();
        echo "test1";
    ob_start();
}

Без късмет. Скриптът изчаква 6 секунди, след което изплюва всичко наведнъж. Бих искал да изведе изхода на екрана, след което да изчака 3 секунди, след това да изведе следващото ехо, след което да изчака още 3 секунди и т.н.


person William    schedule 22.04.2011    source източник
comment
Без да виждате вашия код, как това може да бъде разрешено? Със странно предположение ще кажа опитайте ob_get_clean(), но все пак имам около 1% представа с какво имате проблеми. Публикувайте действителния си код и отделете време, за да обясните ясно проблема си и покажете какво сте опитали и по-конкретно какво не работи.   -  person Wesley Murch    schedule 22.04.2011
comment
Това проработи за мен в codeigniter - stackoverflow.com/a/4978809/2083877   -  person Sunil Kumar    schedule 07.03.2019


Отговори (3)


Опитах това днес и също не се получи. След това погледнах изходния клас на ядрото и имаше частна функция _display(). Реших, че изходът се събира, преди да се покаже в някаква променлива, след което най-накрая се извиква тази функция. Така че преди моя код в метода на контролера добавих този ред:

$this->output->_display("");

и след това изпълни кода. Проработи. Така че вашата модифицирана функция ще бъде така:

function test()
{
    $this->output->_display("");
    ob_end_flush();
        echo "test1";
    ob_start();
    sleep(3);
    ob_end_flush();
        echo "test1";
    ob_start();
    sleep(3);
    ob_end_flush();
        echo "test1";
    ob_start();
}
person Taha Paksu    schedule 24.03.2012

Опитайте да дефинирате BOOST_ASIO_SEPARATE_COMPILATION
person Jerry    schedule 13.02.2013

проверете API на вашия сървър с

echo phpinfo();

ако сте намерили вашия сървър api

Server API :  CGI/FastCGI

в CentOS Добавете ред по-долу в „/etc/httpd/conf.d/fcgid.conf“

OutputBufferSize 0

Рестартирайте вашия Apache сървър и опитайте кода по-долу

ob_start();
for($i = 0; $i < 10; $i ++) {
        echo $i;
        echo '<br />';
        flush();
        ob_flush();
        sleep(1);
    }
person gsm    schedule 05.12.2016