我不得不承认这个问题的标题很糟糕......我无法得到最好的描述。让我看看能不能举个例子。
我有大约 2700 名客户一次将我的软件安装在他们的服务器上。1500左右还是可以的。基本上,我所做的是自动诊断,以帮助清除已卸载或对软件有问题的人,供我们协助。目前我们有一个 cURL 为我们的软件获取他们的网站并寻找标题返回。
我们有 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, ":");
我可以对所有的绿色、红色、蓝色等进行计数...并计算每种颜色的平均时间,然后在平均时间内使用它,尽管我不相信这会产生更好的结果.
由于时代差异如此之大,有什么建议将不胜感激?
谢谢,杰夫