iT邦幫忙

0

CodeIgniter 4 即時輸出疑問

舜~ 2022-05-08 01:39:011425 瀏覽
  • 分享至 

  • xImage

各位前輩好

我想透過CodeIgniter 4來實現類似這篇文章(PHP+jquery ajax 實現實時的輸出顯示)的功能,將當前進度即時顯示到網頁上

GOOGLE爬文沒找不到相關資料,
透過一陣子的自己摸索亂試中於試出來了~

但我不清楚為啥這樣可以...

我在.env的CI_ENVIRONMENT目前設定為development
程式碼如下

<?php
namespace App\Controllers;
use App\Controllers\BaseController;

class demo extends BaseController
{
    public function index()
    {
        $this->response->send(); // 送出預設表頭
        ob_end_flush(); // 從緩衝區輸出並結束當前緩衝區
        flush(); // 顯示到畫面

        for ($i = 0; $i < 10; $i++) {
            echo $i . ' ';

            ob_flush(); // 從緩衝區輸出
            flush(); // 顯示到畫面

            sleep(1);
        }
        echo 'End';
        return $this->response->setJSON('');
    }
}

結果如下圖

  1. 為什麼我把ob_end_flush()換成ob_flush()會導致所有工作都結束才一次輸出?

  2. 是否當前緩衝區比較特別或CI4他有做了什麼特別的設定?

  3. 既然前面使用ob_end_flush()結束當前緩衝區了,FOR裡面若使用ob_start()為啥又變成所有工作都結束才一次輸出?

  4. 是否有更好的做法

  5. 如果我想GOOGLE,我關鍵字要下啥比較好?
    我目前關鍵字使用如codeigniter、即時輸出,就只找到這篇文章但這篇文章是cli不是我要的

淺水員 iT邦大師 6 級 ‧ 2022-05-08 16:45:47 檢舉
也許可以研究一下 Server-sent events 跟 websocket
舜~ iT邦高手 1 級 ‧ 2022-05-27 17:42:17 檢舉
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答