Reduce monitor_nchan messages

This commit is contained in:
bergware
2024-01-06 10:47:12 +01:00
parent 41539b9fe3
commit 0fcc246760
2 changed files with 13 additions and 7 deletions

View File

@@ -755,7 +755,7 @@ foreach ($pages as $page) {
if ($close) echo "</div></div>";
}
if (count($pages)) {
$running = file_exists($nchan_pid) ? file($nchan_pid,FILE_IGNORE_NEW_LINES) : [];
$running = file_exists($nchan_pid) ? file($nchan_pid,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES) : [];
$start = array_diff($nchan, $running); // returns any new scripts to be started
$stop = array_diff($running, $nchan); // returns any old scripts to be stopped
$running = array_merge($start, $running); // update list of current running nchan scripts
@@ -768,7 +768,7 @@ if (count($pages)) {
foreach ($stop as $row) {
[$script,$opt] = my_explode(':',$row);
if ($opt == 'stop') {
exec("pkill -f $docroot/$script >/dev/null &");
exec("pkill -f $docroot/$script &>/dev/null &");
array_splice($running,array_search($row,$running),1);
}
}

View File

@@ -8,7 +8,7 @@ nchan_id=$(basename "$0")
# immediate kill command
if [[ $1 == kill ]]; then
[[ -e $nchan_pid ]] || exit
[[ -s $nchan_pid ]] || exit
echo "Killing nchan processes..."
while IFS=$'\n' read -r running; do
name="${running##*/}"
@@ -28,18 +28,24 @@ if [[ $1 == kill ]]; then
exit
fi
start=$(date +%s)
while :; do
# only act when GUI registered nchan processes are running
if [[ -e $nchan_pid ]]; then
if [[ -s $nchan_pid ]]; then
# get number of GUI nchan subscribers
subs=$(curl --unix-socket $nginx $status 2>/dev/null|grep -Pom1 'subscribers: \K\d+')
if [[ -z $subs || $subs -eq 0 ]]; then
sleep 3
sleep 5
# steady state?
subs=$(curl --unix-socket $nginx $status 2>/dev/null|grep -Pom1 'subscribers: \K\d+')
if [[ -z $subs || $subs -eq 0 ]]; then
logger -t $nchan_id -- "Stop running nchan processes"
# kill GUI registered nchan processes
now=$(date +%s)
# log at 1 hour interval
if [[ $((now-start)) -ge 3600 ]]; then
logger -t $nchan_id -- "Stop running nchan processes"
start=$now
fi
# kill GUI registered nchan processes
while IFS=$'\n' read -r running; do
pkill -f $docroot/${running/:stop/}
done < $nchan_pid