Normalmente lo que debes hacer es tener un registro de última conexión, entonces, en ves de saber con numeros los que estan conectados debieras tener un registro de servidores junto a una columna que indique la fecha de última conexión, luego calculas si esa fecha tiene mas de 30 segundos de antiguedad.
Por ejemplo, cada servidor envía una solicitud a un servidor, el servidor toma la dirección ip de procedencia y actualiza la tabla de servidores, algo así:
UPDATE servers SET last_connection = NOW() WHERE address = %s;
según sea tu tipo de base de datos, tendrás que usar una función de SQL que obtenga el año, mes, dia, hora, minuto y segundo, algo como YYYY-MM-DD HH:MM:SS. La comparación de campos de tipo TIMESTAMP en Mysql o similares en otros motores, tienen la ventja de que puedes buscar por rangos o realizar calculos de tiempos directamente sobre la base de datos, entonces, para saber si un servidor está en linea o no haces una consulta similar a esta:
SELECT 1 FROM servers
WHERE address = %s AND
last_connection > DATE_SUB(NOW(), INTERVAL 30 second)
Entonces, la última conexión debe ser mayor al tiempo actual menos 30 segundos, o sea, retornará un 1 si el servidor tuvo una conexión hace menos de 30 segundos.
Para saber todos los servidores conectados reemplazas el 1 por la dirección ip o nombre del servidor y listo. No necesitas procedimientos almacenados o un cron para eso, de hecho no es buena práctica porque escapa de la lógica de tu capa de negocio o capa de datos, si pones tus procedimientos en la base de datos no podrás crear una aplicación escalable ni de uso transaccional.
Saludos.