
Eu pretendia criar um script de monitoramento para verificar constantemente através do Cron a quantas andam os serviços dos principais domínios e servidores que gerencio. Até pensei em utilizar algum serviço profissional, mas a demanda era pouca e não justificaria o gasto. E outra: Porque contratar um serviço se eu posso criar o meu?
Depois de algumas buscas, acabei caindo na dica do colega Rafael Jaques, através do site PhpIt .
É muito simples, mais do que você imagina. Encontrei na internet várias aplicações semelhantes a esta:
<?php
exec('ping 127.0.0.1', $saida, $retorno);
if (count($saida)) {
print 'A Máquina está online e os dados do PING foram gravados em $saida.
';
} else {
print 'A Máquina NÃO está online ou o host não pode ser encontrado.
';
}
?>
Mas nem sempre o comando exec() é permitido. Muitos servidores, visando maior segurança, bloqueiam o uso desse artifício. A solução indicada pelo Rafael é, em vez do exec(), utilizar o fsockopen() para a tarefa:
<?php
$conectado = @ fsockopen('127.0.0.1', 135, $numeroDoErro, $stringDoErro, 10); // Este último é o timeout, em segundos
if ($conectado) {
print 'A máquina está online!
';
} else {
print 'A máquina NÃO está online!
';
}
?>
Em vez da porta 135, você poderia utilizar a porta 80 para verificar se o serviço http está funcionando corretamente. Não cheguei a testar com outras portas como FTP, MySQL, Jabber, etc, mas pela lógica deverá funcionar também. De qualquer modo, fica aí a dia.
Agradecimentos ao Rafael, do PHPIt.
