Не могу никак сообразить.
В общем есть таблица в бд вида:
В ней логируется запуск, пауза, остановка процесса.
Хотелось бы узнать как мне посчитать время работы процесса, т.е. работа процесса это состояние 1, стоп и пауза это 2 и 0
Как узнать общее время работы процесса в виде 0:00:00:00 (дни:часы:минуты:секунды)
Общее время работы скрипта это сумма периодов от старта до паузы (остановки). Чтобы подсчитать это - выбираем все записи из БД для заданого процесса отсортированные по времени в порядке возрастания. А дальше простенький скрипт:
$worked = 0;
$in_process = false;
$start = time();
foreach ($rows as $row) {
switch ($row['event']) {
case 1:
$start = $row['timestamp'];
$in_process = true;
break;
defaut:
$worked += $row['timestamp'] - $start;
$in_process = false;
}
}
if ($in_process) { // если скрипт сейчас в работе
$worked += $time - $start; // учитываем время от последнего запуска до текущего времени
}
echo "Worked time in seconds: " . $worked;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей