Информация о потоке PHP в контроллере

Я пытаюсь отправить данные для просмотра с контроллера в PHP CodeIgniter.
Я ob_flush функцию PHP через ajax и используя ob_flush для отправки данных, но проблема в том, что все вызовы flush объединяются в более поздние вызовы.

Например: первый сброс отправки 1 й тайм-код отправки 12 вместо 2 .

Это мой контур контроллера.

 foreach ($csv_array as $row) { ob_start(); $varint=$varint+1; echo $varint; $content = ob_get_contents(); ob_end_clean(); echo $content; ob_flush(); flush(); while (ob_get_level() > 0) { ob_end_clean(); } } 

Мой вызов ajax:

 document.getElementById('upld').onclick = function() { xhr = new XMLHttpRequest(); var mydata = new FormData($('#form')[0]); xhr.open("POST", base_url+"index.php/controller/function", true); xhr.onprogress = function(e) { console.log(e.currentTarget.responseText); } xhr.onreadystatechange = function(data='') { if (xhr.readyState == 4) { console.log(myArr); } } xhr.send(mydata); }; 

Документация для flush() говорит:

flush () не сможет переопределить схему буферизации вашего веб-сервера и не влияет на буферизацию на стороне клиента в браузере. Он также не влияет на механизм буферизации вывода пользовательского пространства PHP. Это означает, что вам придется вызывать оба ob_flush () и flush (), чтобы очистить выходные выходные буферы, если вы их используете.

В вашем случае вы можете заменить flush() на ob_flush() поскольку я не думаю, что вы хотите очистить выходные буферы системы.

Как немного дополнительно этот код:

 $content = ob_get_contents(); ob_end_clean(); 

Может быть сконденсировано в один вызов функции, который является псевдонимом для обеих предыдущих команд:

 $content = ob_get_clean(); 

Документация для ob_get_clean()