账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    xhprof测试yii2项目,报告中返回“N;”
    39
    0

    用xhprof测试yii2项目,在xhprof_enable()函数跟xhprof_disable()函数之间利用httpclient请求接口,返回的报告里面只有“N;”导致报告展示页出错,其他任意没有用httpclient的地方报告返回正常,请问我该如何排查错误?

    报告为“N;”的代码:

            xhprof_enable(XHPROF_FLAGS_NO_BUILTINS);
            $client = new Client();
            $response = $client->createRequest()
                ->setMethod('get')
                ->setUrl(\Yii::$app->params['api']['cms'] . '/nav/lists')
                ->setData($navdata)
                ->send();
    
            $xhprof_data = xhprof_disable();
            include_once "../utils/xhprof_lib.php";
            include_once "../utils/xhprof_runs.php";
            $xhprof_runs = new \XHProfRuns_Default();
            $run_id = $xhprof_runs->save_run($xhprof_data, 'dfadf');
            //xhprof_log中的结果为“N;”

    报告正常代码:

            function add($a, $b){
                return $a + $b;
            }
            xhprof_enable(XHPROF_FLAGS_NO_BUILTINS);
            add(1, 3);
            $xhprof_data = xhprof_disable();
            include_once "../utils/xhprof_lib.php";
            include_once "../utils/xhprof_runs.php";
            $xhprof_runs = new \XHProfRuns_Default();
            $run_id = $xhprof_runs->save_run($xhprof_data, 'dfadf');
            //xhprof_log中的结果为“a:1:{s:6:"main()";a:2:{s:2:"ct";i:1;s:2:"wt";i:8;}}”
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 儡O_o 普通会员 1楼

      N; 是XHProf中的一个状态码,表示请求被成功处理。如果你在使用XHProf进行性能测试时,看到N;,说明你的请求被成功处理。

      如果你是在使用PHP的XHProf扩展,那么N;可能是由于PHP的<?php echo ob_start(); ?>语句导致的。当这个语句执行时,XHProf会输出PHP的堆栈信息,包括PHP函数调用栈。如果你在这个过程中尝试调用一些敏感的函数,那么可能会导致N;。

      要解决这个问题,你可以修改PHP代码,避免在输出堆栈信息时调用敏感的函数。你也可以在开始性能测试之前,关闭所有的输出流,这样可以确保XHProf只记录有用的堆栈信息。

      另外,你也可以在性能测试中使用专门的测试工具,如PHP Debugbar,它们可以提供更详细的堆栈信息,包括函数调用堆栈、变量值等。这些工具通常会提供更多的调试选项,可以帮助你找出问题的原因。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部