Я начинающий разработчик, который только начал программировать около года назад. В настоящее время я использую Linux Mint 18.1, и мне нравится отслеживать статистику моего ноутбука через окно tmux с несколькими открытыми вещами, такими как Htop, Iotop, сенсоры и т. Д.
Недавно я создал скрипт батареи с PHP, который успешно просматривает то, что я хочу, но я столкнулся с ошибкой, которую я не знаю, как бороться. В основном мой скрипт выводит статистику заряда батареи в окне терминала при запуске и обновляется каждую секунду. Моя дилемма в том, что я перевел свой ноутбук в спящий режим, и, проснувшись, получил спам с ошибками нехватки памяти, в то время как мой компьютер боролся с SIGKILL, что, как я полагаю, является моим мошенническим сценарием.
Вот пример длинного списка ошибок, расположенный в /var/log/php7.0-fpm.log
[24-Jan-2017 17:49:41] ВНИМАНИЕ: [pool www] ребенок 3368 вышел по сигналу 9 (SIGKILL) через 0,007716 секунд от началаЯ считаю, что это из-за того, как работает мой цикл. Что было бы лучшим способом выполнить такой цикл?
<?php
$true = 1;
while($true == 1){
EchoStats();
sleep(1);
system('clear');
}
function EchoStats()
{
$stats = GetBatStats();
echo "Battery State: " . $stats[0] . "\n";
echo "Battery Level: " . $stats[1] . "\n";
if($stats[0] == 'discharging'){
echo "Battery Time Left: " . $stats[2] . "\n";
}
if($stats[0] == 'charging'){
echo "Time until fully charged: " . $stats[2] . "\n";
}
}
function GetBatStats()
{
$battPercent = exec("upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep 'percentage'");
$battPercent = IsolateValue($battPercent);
$battState = exec("upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep 'state'");
$battState = IsolateValue($battState);
if($battState == 'discharging'){
$battEstTime = exec("upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep 'time to empty'");
$battEstTime = IsolateValue($battEstTime);
}
if($battState == 'charging'){
$battEstTime = exec("upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep 'time to full'");
$battEstTime = IsolateValue($battEstTime);
}
return array($battState,$battPercent,$battEstTime);
}
function IsolateValue($var)
{
$var = explode(':',$var);
$var = $var[1];
$var = str_replace(' ','',$var);
$var = str_replace('hours',' hours',$var);
$var = str_replace('minutes',' minutes',$var);
return $var;
}
?>
Задача ещё не решена.
Других решений пока нет …