コード例 #1
0
ファイル: Gavg.php プロジェクト: Genffy/calculate
 /**
  * 计算样本平中某一项的平均值
  * @param  array $reqs 样本列表
  * @param  string $key 指定本函数对哪一个数据项进行求值运算
  * @return number          均值
  */
 public static function avg($reqs, $key)
 {
     $list = array();
     foreach ($reqs as $req) {
         if ($req[$key] && $req[$key] > 0) {
             $list[] = $req[$key];
         }
     }
     if (count($list) <= 0) {
         return 0;
     }
     $removed = Util_Grubbs::run($list, self::P);
     $result = (array_sum($list) - array_sum($removed)) / (count($list) - count($removed));
     return (int) $result;
 }
コード例 #2
0
ファイル: SampleOpt.php プロジェクト: Genffy/calculate
 /**
  * 检查样本情况进行优选
  * @param  array $pcData       PC样本数据
  * @param  array keys 所有的key
  * @param  array pcKeys 所有的pc样本的key
  * @param  array $condition    条件统计结果
  * @param  int $pcNumber     pc样本数量
  * @param  int $mobileNumber 移动样本数量
  */
 public static function check($url, $pcData, &$keys, &$pcKeys, &$condition, &$pcNumber)
 {
     $errorSamples = array();
     $nomalSamples = array();
     foreach ($pcData as $key => $data) {
         $errorCode = $data["firstView"]["basic"]["errorCode"];
         //if ($errorCode >= 99996 && $errorCode <= 99998) {
         //不管错误
         //$errorSamples[$key] = $errorCode;
         //由于客户端bug,极少数情况返回回来的样本不是本次测试的网址,需要过滤
         if ($data["firstView"]["basic"]["URL"] != $url) {
             $errorSamples[$key] = 'URL not match';
         } else {
             if ($data['firstView']['basic']['fullyLoaded'] == 0) {
                 $errorSamples[$key] = 'fullyloaded is 0';
             } else {
                 $nomalSamples[$key] = $data["firstView"]["basic"]["fullyLoaded"];
             }
         }
     }
     //格拉布斯检验法识别错误样本
     $abnormalSamples = Util_Grubbs::run($nomalSamples, 99.5);
     foreach ($abnormalSamples as $key => $value) {
         $errorSamples[$key] = "time_abnormal: {$value}";
     }
     foreach ($errorSamples as $key => $v) {
         $keys = self::delKey($keys, $key);
         $pcKeys = self::delKey($pcKeys, $key);
         foreach ($condition["data"]["pc"] as $cls => $cData) {
             foreach ($cData as $cKey => $cList) {
                 $condition["data"]["pc"][$cls][$cKey] = self::delKey($cList, $key);
             }
         }
     }
     $pcNumber = $pcNumber - count($errorSamples);
     return $errorSamples;
 }