Bem vindo ao SOS Designers

Faça o seu cadastro gratuito no Portal SOS Designers e tenha um acesso personalizado.

Empresas

Cadastre gratuitamente suas vagas, crie sua propria Lista de Curriculos Favoritos, e tenha um acesso personalizado.

Usuarios

Cadastre gratuitamente seu curriculo, crie sua propria Lista de Noticias Favoritas e tenha um acesso personalizado.

Área de Empresas | Vagas

Área de acesso a empresas cadastradas que desejam postar vagas de empregos no Portal e pesquisar curriculos.

Cadastre-se gratuitamente
Esqueceu a sua senha?

Área de Usuarios | Curriculos

Área do Usuario que deseja cadastrar seu curriculo e pesquisar vagas.



Cadastre-se gratuitamente
Esqueceu a sua senha?

5 Visitantes Online
Redes Sociais
Siga o Portal SOS Designers no Twitter Siga o Portal SOS Designers no Facebook

PHP


Você está aqui: Home » PHP » Verificando integridade de servidores POP com PHP/sockets

Verificando integridade de servidores POP com PHP/sockets


Pesquisar no Portal SOS Designers





Tempo Real



Participe da Comunidade SOS Designers

Siga o SOS Designers








For Brazil

Verificando integridade de servidores POP com PHP/sockets

 

A linguagem PHP é tão rica que muitas vezes não sabemos o que pode-se extrair de determinados recursos por ela oferecidos. Neste artigo mostro como criar um web-robot que verifica a integridade de servidores POP através de conexões TCP/IP.
Introdução Papel A4 versão imprimível
Esse artigo é uma incrementação do artigo "Criando um painel de rede em PHP", mas desta vez vamos mais à fundo nos recursos da linguagem,utilizando de suas funções de rede para verificar a integridade do servidor a um nível mais detalhado.

Nossa primeira versão do painel apenas verificava se uma máquina estava ativa na rede. Para tornarmos nosso aplicativo mais eficiente, vamos utilizar dos recursos de rede do PHP para verificar se o serviço desejado está ativo ou não. Muitas vezes um servidor passa a negar serviços de rede por algum motivo, mas continua respondendo a pacotes ICMP como se nada tivesse acontecido.

Para demonstrar a funcionalidade do painel, escolhi o serviço POP(Post Office Protocol) como alvo de nosso web-robot, por ser muito comum a queda do mesmo em servidores de rede (1).

(1) isso sem levar em conta as quedas do MS SQL Server quando executado em servidores menos robustos

Elaborando o script - parte 1

O primeiro passo na construção de nosso script será definir um cabeçalho usado para recarregar nosso script de tempos em tempos. Podemos fazer isso usando a tag meta do HTML:

<META HTTP-EQUIV="Refresh" CONTENT="60">

Neste caso, nosso script será recarregado a cada 60 segundos. Em seguida, vamos definir o array que contém a lista de servidores que será monitorada:
<?
$servidores = array ("pop3.uol.com.br","pop.matrix.com.br","pop.ibest.com.br");
?>;
Neste exemplo utilizei endereços de servidores POP de provedores Internet,altere os mesmos para os servidores da sua empresa.

No bloco abaixo temos o coração do aplicativo. Utilizo uma estrutura de looping para percorrer cada máquina do array servidores, abrindo uma conexão TCP na porta 110 (2) com a mesma. Aproveitei do recurso de tabelas do HTML para melhorar a formatação da saída do programa.

(2) por definição, o serviço POP sempre é executado na porta 110 de um servidor
<?
while (list($chave,$servidor) = each($servidores)) {
$stream = fsockopen ($servidor, 110, $errono, $errostr, 30);

echo "<td>".$servidor."<br>"."Status:";
if ($stream) {
echo "<b>Ativo</b></td>";
} else {
echo "<font color=red>" . $errostr . "</font></td>";
}
}
?>
Na linha:

$stream = fsockopen ($servidor, 110, $errono, $errostr, 30);

A variável $stream armazena a conexão com o servidor em questão. O comando fsockopen se conecta à porta 110 de $servidor, em caso de erro durante a conexão, o número e a descrição do mesmo são respectivamente armazenadas em $errorno e $errorstr. O tempo de espera para a realização de conexão é de 30 segundos.

Seguindo a lógica do programa, se a variável $stream possuir um valor VERDADEIRO, sabemos que o servidor está aceitando conexões, caso contrário,mostramos a mensagem do erro ocorrido na tela.
<?
if ($stream) {
echo "<b>Ativo</b></td>";
} else {
echo "<font color=red>" . $errostr . "</font></td>";
}
?>

Elaborando o script - parte final

Agora que todas as partes do nosso programa foram explicadas, vamos unificar nossos blocos para formar nosso aplicativo.
<!-- painelPOP.php -->
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="60">
</head>
<body>
<h3>Painel de Monitoramento de Servidores de Email</h3>
<table border=1 cellspacing=3>
<tr>
<?
$servidores = array ("pop3.uol.com.br","pop.matrix.com.br");

while (list($chave,$servidor) = each($servidores)) {
$stream = fsockopen ($servidor, 110, $errono, $errostr, 30);

echo "<td>".$servidor."<br>"."Status:";
if ($stream) {
echo "<b>Ativo</b></td>";
} else {
echo "<font color=red>" . $errostr . "</font></td>";
}
}
?>
</tr>
</table>
</body>
</html>


Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br







© Copyright 2002-2012
Portal SOS Designers
Webmaster: Luiz Antonio Bovi