- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用 PHP 编写了一个程序,它在运行时存储在 MySQL 数据库中。显示程序是否正常工作的表格如下所示:
Table_name: downtime
Working(int) Time(datetime)
1 2011-05-06 15:18:55
0 2011-05-06 15:20:21
1 2011-05-06 15:20:24
0 2011-05-06 16:05:13
1 2011-05-06 16:05:15
0 2011-05-06 16:27:59
1 2011-05-06 16:28:01
0 2011-05-06 16:37:35
1 2011-05-06 16:37:37
现在我想检索日期之间的“停机时间”。假设日期 1 是 2011-05-06 15:20:24,日期 2 是 2011-05-06 16:28:15,那么我希望脚本返回该期间 1 和 0 之间的差值之和.我该怎么做?
重要的是要知道如果日期 1 例如是 2011-05-06 15:20:22,则停机时间会增加两秒。很难想出(几乎)完美的解决方案。
最佳答案
这段代码应该可以工作,我已经用您的示例数据对其进行了测试:
// Example data
// Note: assumes $data is sorted by date already
$data = array(
"2011-05-06 15:18:55"=>1,
"2011-05-06 15:20:21"=>0,
"2011-05-06 15:20:24"=>0,
"2011-05-06 16:05:13"=>0,
"2011-05-06 16:05:15"=>0,
"2011-05-06 16:27:59"=>1,
"2011-05-06 16:28:01"=>0,
"2011-05-06 16:37:35"=>0,
"2011-05-06 16:37:37"=>1
);
$startTime = strtotime("2011-05-06 15:18:55");
$endTime = strtotime("2011-05-06 16:28:01");
$totalUptime = 0;
$lastUptime = 0;
foreach ($data as $dateString => $isWorking)
{
$timestamp = strtotime($dateString);
if ($lastWorking && $lastTimestamp)
{
$allowedStart = $lastTimestamp;
if ($allowedStart<$startTime)
$allowedStart = $startTime;
$allowedEnd = $timestamp;
if ($allowedEnd>$endTime)
$allowedEnd = $endTime;
$diff = $allowedEnd-$allowedStart;
if ($diff>0)
{
$totalUptime += $diff;
}
}
if ($timestamp>=$endTime)
{
break;
}
$lastTimestamp = $timestamp;
$lastWorking = $isWorking;
}
print "Total uptime: ".$totalUptime." seconds";
您只需要用您自己的数据库记录填充$data
。
关于PHP 计算 'downtime',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914465/
是否有一种优雅地升级网站的首选方法?我有一个全新的代码库准备在网站上使用,但更新它需要几个小时。我不希望网站因为“正在升级,很快回来!”而一直停机。消息,但我也不能在新站点就位时离开当前站点。 我能想
我用 PHP 编写了一个程序,它在运行时存储在 MySQL 数据库中。显示程序是否正常工作的表格如下所示: Table_name: downtime Working(int) Time(date
微软刚刚发送了一封电子邮件,通知我们公司将对我们的 Windows Azure 环境进行定期维护。 We will be performing maintenance on our networkin
我正在努力适应 helm,但在使用 helm upgrade 时遇到了问题。问题是,是否有可能实现 0 停机时间? 我注意到的是 helm/k8s 在新的 pod 就绪/上线之前删除了旧的 pod。是
我有一个 solr 独立服务器(不是 solr 云),保存来自几个不同来源的文档。 通常我需要更新源的文档,通常我通过从该源/组中删除所有文档并为该源索引新文档来完成此操作,但这会造成时间间隔,我没有
我看不到如何使用 Docker 实现零停机部署。 假设我有一个运行 MyWebApp 的 PHP 容器,由同一服务器上的 Nginx 容器提供服务。然后我更改了一些代码,因为 Docker 容器是不可
我正在研究使用 Redis Cluster (Redis 4.0)。 我有一个包含 5 个主节点的集群,每个节点都有一个副本。我们可以分别调用每个主机 A、B、C、D、E,每个从机 A1、B1、C1、
好吧,我在倒计时器启动之前运行了一个线程,然后当该线程内的变量更改其值时,将触发 onTick() 方法内的条件,该条件将调用 onFinish() 并执行所需的操作,问题是在 onTick() 方法
我正在运行 Rails 3.2.21 应用程序并使用 capistrano(nginx 和 unicorn)部署到 Ubuntu 12.04.5 机器。 我的应用程序设置为零停机部署(至少我认为),我
我们需要将 Google Cloud SQL 实例从 db-g1-small 更改为 db-n1-standard-1。我可以在零停机时间的情况下更改它吗? 编辑 1 我想我找到了答案。似乎需要几秒钟
我在服务器上新安装了 Nagios,安装后我试图访问 Nagios,它给我的错误是: 由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后再试 虚拟机:Centos 8.3 按照这篇文章安装 N
我是一名优秀的程序员,十分优秀!