Time 使用不同长度的变量计算剩余时间

Time 使用不同长度的变量计算剩余时间,time,Time,我必须承认这个问题的标题很烂。。。我无法得到最好的描述。让我看看能否举个例子 我有大约2700名客户,他们的服务器上曾经安装过我的软件。1500左右仍然如此。基本上,我正在进行的是一个自动诊断,以帮助清除那些已卸载或与我们的软件有问题的人,以协助。目前,我们有一个卷发获取他们的网站为我们的软件,并寻找一个标题返回 我们返回了8种不同的状态 绿色-一切正常(通常非常快0.5-2秒) 红色-未找到软件(通常最长为5-15秒) 蓝色-找到软件但未激活(通常为3-9秒) 黄色-服务器IP不匹配(通常为1

我必须承认这个问题的标题很烂。。。我无法得到最好的描述。让我看看能否举个例子

我有大约2700名客户,他们的服务器上曾经安装过我的软件。1500左右仍然如此。基本上,我正在进行的是一个自动诊断,以帮助清除那些已卸载或与我们的软件有问题的人,以协助。目前,我们有一个卷发获取他们的网站为我们的软件,并寻找一个标题返回

我们返回了8种不同的状态

绿色-一切正常(通常非常快0.5-2秒)
红色-未找到软件(通常最长为5-15秒)
蓝色-找到软件但未激活(通常为3-9秒)
黄色-服务器IP不匹配(通常为1-3秒)
橙色-服务器IP不匹配和错误的软件类型(通常为5-10秒)
紫色-激活密钥不正确(通常在2秒内)
黑色-域返回404-不再存在(通常在一秒钟内)
UNK-连接失败(通常是由于我们的负载平衡器——非常罕见)(从未对此进行反击)

现在,基本上,cronJob将通过拉取域和产品类型来启动流程。然后,它将卷曲域并开始在上面的状态颜色中循环

当这种情况发生时,我们有一个ajax页面,它将返回结果,因此我们可以关注状态。主要的问题是剩余的时间是如此的不稳定,以至于不能很好的估计。以下是当前的数学:

# Number of accounts between NOW and when started
$completedAccounts = floor($parseData[2]*($parseData[1]/100));

# Number of seconds between NOW and when started
$completedTime = strtotime("now") - strtotime("$hour:$minute:$second"); 

# Avg number of seconds per account
$avgPerCompleted = $completedTime / $completedAccounts; 

# Total number of remaining accounts to be scanned
$remainingAccounts = $parseData[2] - $completedAccounts;

# The total of seconds remaining for all of the remaining accounts
$remainingSeconds = $remainingAccounts * $avgPerCompleted;

$remainingTime = format_time($remainingSeconds, ":");
我可以在所有的绿色、红色、蓝色等等上创建一个计数。。。计算每种颜色的平均使用时间,然后用它来计算平均使用时间,虽然我不认为这会产生更好的效果

由于时差如此之大,有什么建议值得感激吗

谢谢,
杰夫

好的,我想我已经弄明白了。我必须创建一个类,以便在一段时间内计算一个回归

    function calc() {
        $n = count($this->mDatas);
        $vSumXX = $vSumXY = $vSumX = $vSumY = 0;

        //var_dump($this->mDatas);
        $vCnt = 0; // for time-series, start at t=0<br />
        foreach ($this->mDatas AS $vOne) {
            if (is_array($vOne)) { // x,y pair<br />
                list($x,$y) = $vOne;
            } else { // time-series<br />
                $x = $vCnt; $y = $vOne;
            } // fi</p>
            $vSumXY += $x*$y;
            $vSumXX += $x*$x;
            $vSumX += $x;
            $vSumY += $y;
            $vCnt++;
        } // rof
        $vTop = ($n*$vSumXY – $vSumX*$vSumY);
        $vBottom = ($n*$vSumXX – $vSumX*$vSumX);
        $a = $vBottom!=0?$vTop/$vBottom:0;
        $b = ($vSumY – $a*$vSumX)/$n;

        //var_dump($a,$b);
        return array($a,$b);
    }
我将静态值放入,以便您可以看到结果:

$eachTime = array(7,1,.5,12,11,6,3,.24,.12,.28,2,1,14,8,4,1,.15,1,12,3,8,4,5,8,.3,.2,.4,.6,4,5);
$forecastProcess = new Linear($eachTime);
$forecastTime = $forecastProcess->calcpredict(5);
这个整体系统在10个账户中给了我大约0.003的差异,在2700个账户中给了我大约2.6的差异。下一步是计算精度


感谢你尝试过男人和女孩

所以基本上,你需要花多长时间,并将其与你期望的平均反应结合起来,然后对剩余时间做出合理的估计?这听起来是正确的。虽然变量非常多变。。。如果这有道理的话。你似乎应该计算每种类型的预期点击次数,乘以它们的平均次数,然后求和。或者你可以并行地进行这些检查,这样可以节省大量的时间。主要是因为每个帐户被诊断的时间不同,而且有几个帐户定期加入和取消。我也不确定这是否是最好的计算。会做一些测试来考虑它。
$eachTime = array(7,1,.5,12,11,6,3,.24,.12,.28,2,1,14,8,4,1,.15,1,12,3,8,4,5,8,.3,.2,.4,.6,4,5);
$forecastProcess = new Linear($eachTime);
$forecastTime = $forecastProcess->calcpredict(5);