db->query("use x_logs"); } function do($status = false) { $sql = "select * from pinger where pingerIsActive = 'Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "Err : " . $this->db->last_query(); exit; } $rows = $qry->result_array(); foreach ($rows as $r) { $dt = "[" . date("Y-m-d h:i:s") . "] "; echo "$dt Ping " . $r["pingerHost"] . " " . $r["pingerDescription"] . " => "; $this->do_ping($r["pingerID"], $r["pingerHost"], $r["pingerDescription"], $status); sleep(1); } } function status() { $this->do(true); } function do_ping($id, $host, $name, $status = false) { $rtt = $this->ping($host, 5); if ($rtt == -1) { $sql_u = "update pinger set pingerRttMs=? where pingerID = ?"; } else { $sql_u = "update pinger set pingerLastPong=now(),pingerRttMs=? where pingerID = ?"; } $qry = $this->db->query($sql_u, [$rtt, $id]); $dt = "[" . date("Y-m-d h:i:s") . "] "; if (!$qry) { echo "$dt Err : " . $this->db->last_query(); exit; } $this->load->library("Wa_sas"); if ($rtt == -1) { //sasone //6282113702602-1584412485 $hp = "6282113702602-1584412485@g.us"; // hore $hp = "120363280846797029@g.us"; $msg = "$name [$host] unreacheable"; $resp = $this->wa_sas->send_message($hp, $msg, true); echo "$dt OK : unreachable. " . print_r($resp, true); } else { if ($status) { $hp = "6282113702602-1584412485@g.us"; // hore $hp = "120363280846797029@g.us"; $msg = "$name [$host] : ping avg $rtt ms"; $resp = $this->wa_sas->send_message($hp, $msg, true); echo "$dt OK : unreacheable. " . print_r($resp, true); } else { echo "$dt OK : avg $rtt ms"; } } } function ping($host, $count = 5) { $rtts = []; for ($i = 0; $i < $count; $i++) { // Use exec to ping the host and capture the output $output = []; exec("ping -c 1 -W 1 " . escapeshellarg($host), $output, $status); // Check if ping was successful (status 0 means success) if ($status === 0) { // Extract the round-trip time from the output if (preg_match('/time=([0-9.]+) ms/', implode("\n", $output), $matches)) { $rtts[] = (float)$matches[1]; } } } // If there are successful pings, calculate the average RTT; otherwise, return -1 if (count($rtts) > 0) { return array_sum($rtts) / count($rtts); } else { return -1; // Host unreachable in all attempts } } }