Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

dguimaraes

[Resolvido] Ping PHP

Mensagens Recomendadas

dguimaraes    2
dguimaraes

Boas, estou agora a começar a programar em PHP, e gostava de fazer uma função que fizesse um ping a um host e me desse um retorno verdadeiro ou falso para alterar um estado de uma imagem. É possível fazer só com php ou é necessário outra linguagem?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
apocsantos    211
apocsantos

Boa noite,

Se apenas queres ver se o host responde, podes tentar ligar a um porto que saibas que estará aberto, caso estabeleça connecção faz algo, caso não estabeleça faz outra tarefa.

$host = '192.168.2.254'; //ip do host
$port = 8080; //porta
$Timeout = 1; //timeout  
if($fp = fsockopen($host,$port,$errCode,$errStr,Timeout))
{  
  echo "respondeu";
} else
{
  echo "nao respondeu"; 
}  
fclose($fp); //fecha

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
dguimaraes    2
dguimaraes

Boas!

apocsantos obrigado pela dica :) era isso só não percebo uma cena, por exemplo na condição $fp, para que objectivo se adiciona a variável $errCode e $errStr? Desculpem a ignorancia mas gosto de saber o que faz cada uma das linhas eu sei que já existem rodas inventadas mas para saber como elas rodam gosto de saber o que executa cada linha.

Abraço

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
dguimaraes    2
dguimaraes

Boas,

Mas esta função não é propriamente um ping, ele depende da porta se tem a porta neste caso 8080 aberta ou não, se o usar para testar um host como windows sem servidor web ou um serviço com a porta desejada não funciona...isto quero dizer que não é genérico...certo?

Atentamente,

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
apocsantos    211
apocsantos

Boa tarde,

Certo! Isto testa apenas se um host aceita conecções numa determinada porta e não uma implementação do ICMP Echo Request.

Normalmente a porta 80 terá resposta nos servidores web, mas não em todos os hosts. Se queres mesmo um ICMP Echo Request, podes (caso o host permita), usar a função exec e o ping do sistema operativo.

<?php
function pingaMasNaoChove($ip)
{
     $resultado = exec("/bin/ping -n 4 $ip", $rsp, $estado);
  if (0 == $estado)
  {
    $estado = "vivo";
   } else
 {
    $estado = "morto";
   }
   echo .$status;
}

Para usar basta chamar a função com um endereço

pingaMasNaoChove("192.168.2.254");

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.