国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

請問webman使用協(xié)程查詢數(shù)據(jù)庫時的一個問題

深林孤鷹

今天測試了一下協(xié)程效果,把依賴都更新為最新版(workerman/webman-framework ^2.1、webman/database:~2.1、webman/think-orm:~2.1),然后修改process.php的'eventLoop' => Workerman\Events\Fiber::class,環(huán)境是windows,測試代碼:

    public function index(): Response
    {
        $value = \think\facade\Db::query('SELECT NOW() as now, sleep(5)');
        return json($value); // [{"now":"2025-02-06 23:41:03","0":"2025-02-06 23:41:03"}]
    }

這里用sleep模擬了慢查詢,按原想法應(yīng)該:開啟了協(xié)程,單進(jìn)程遇IO阻塞也可以同時處理多個請求,但實際測試執(zhí)行到這里阻塞時,其他請求也是阻塞的(哪怕什么都不處理),不知是我對協(xié)程理解的有問題還是代碼的問題呢?

459 1 0
1個回答

故人重來

仔細(xì)看下文檔;官方文檔的解釋

  • 但Fiber無法像Swoole和Swow那樣自動協(xié)程化,遇到PHP自帶的阻塞函數(shù)時會阻塞整個進(jìn)程,并不會發(fā)生協(xié)程切換
  • 當(dāng)使用Fiber/Select/Event驅(qū)動時,如果使用的是PDO redis等阻塞式擴(kuò)展,則自動退化為只有一個連接的連接池
  • 在沒有數(shù)據(jù)庫組件開啟池的話,要加鎖的
  • 深林孤鷹 2025-02-13

    嗯,這個我看了,而且官方文檔里說:

    webman v2.1 已經(jīng)提供了以下組件,它們都集成了連接池,支持在協(xié)程和非協(xié)程環(huán)境下使用
    webman/database (Laravel系)
    webman/redis (Laravel系)
    webman/cache (Laravel系)
    webman/think-orm (ThinkPHP系)
    webman/think-cache (ThinkPHP系)

    我以為這些都已經(jīng)適配好了各協(xié)程驅(qū)動,難道只能Swoole和Swow使用IO協(xié)程么?那Fiber只能使用Timer定時器這些有限的協(xié)程功能?請賜教~

  • 故人重來 2025-02-13

    Fiber 你去看文檔,阻塞下還是同步的操作的。你去看下文檔;我求求你啊。

  • 深林孤鷹 2025-02-14

    好的,謝謝

??