经过测试,如果控制器方法 return 字符串,控制器外的 response::getContent 能够获取到最终需要输出的内容,但是 return 数组再通过 afterExecuteRoute 进行转化,如果不使用 dispatcher::setReturnedValue 方法,会导致控制器外 response::getContent 获取不到任何内容。

    public function afterExecuteRoute()
    {
        $return = $this->dispatcher->getReturnedValue();
        if (!$return instanceof $this->response && is_array($return)) {
            $this->view->disable();
            $this->response->setJsonContent($return, JSON_UNESCAPED_UNICODE);
            $this->dispatcher->setReturnedValue($this->response->getContent());
        }
        return $this->response;
    }

先把内核升级到 4.9 或以上,因为只有 4.9 才开始支持 BBR,可以查看博主之前的升级记录

echo net.core.default_qdisc = fq >> /etc/sysctl.conf
echo net.ipv4.tcp_congestion_control = bbr >> /etc/sysctl.conf
sysctl -p

这里再推荐 WorkerMan 的优化 Linux 内核,听说 Linux 内核可定制性非常高,有需要自己研究一下,博主就直接照搬 WorkerMan 的优化建议。