Pergunta

Eu tenho um script que verifica as respostas dos servidores HTTP usando as classes HTTP PEAR.No entanto, descobri recentemente que o script falha em servidores FTP (e provavelmente em qualquer coisa que não seja HTTP ou HTTPS).Tentei o Google, mas não vi nenhum script ou código que retornasse o código de status do servidor de servidores diferentes de servidores HTTP.

Como posso descobrir o status de um grupo de notícias ou servidor FTP usando PHP?

EDITAR:Devo esclarecer que estou interessado apenas na capacidade de ler de um servidor FTP e do diretório que eu especificar.Preciso saber se o servidor está morto/desaparecido, não estou autorizado a ler, etc.

Observe que, embora na maioria das vezes eu seja agnóstico quanto ao idioma, todo o site é baseado em PHP, portanto, uma solução PHP seria a melhor para facilitar a manutenção e a extensibilidade no futuro.

Foi útil?

Solução

Infelizmente, o HTTP funciona de maneira um pouco diferente do FTP.Embora ambos possam parecer iguais no seu navegador, o HTTP funciona com base no URI (ou seja,para acessar o recurso A, você tem um identificador que informa como acessá-lo).

FTP é um servidor muito antigo.Mesmo o FTP anônimo é um pouco hackeado, já que você ainda fornece um nome de usuário e uma senha, é apenas definido como “anônimo” e seu endereço de e-mail.

Verificar se um servidor FTP está ativo significa verificar

  1. Que você pode se conectar ao servidor FTP

    if (!($ftpfd = ftp_connect($hostname))) { ... }

  2. Que você pode fazer login no servidor:

    if (!ftp_login($ftpfd, $username, $password)) { ... }

  3. Então, se houver outros recursos subjacentes que você precisa acessar para testar se um site específico está ativo, use uma operação apropriada neles.por exemplo.em um arquivo, talvez use ftp_mdtm() para obter a hora da última modificação ou em um diretório, veja se ftp_nlist() funciona.

Outras dicas

Não seria mais simples usar a funcionalidade PHP FTP* integrada do que tentar criar a sua própria?Se o URI vier de uma fonte fora do seu controle, você precisará verificar a definição do protocolo (http:// ou ftp://, etc) para determinar qual funcionalidade usar, mas isso é bastante trivial.Se agora houver um protocolo especificado (realmente deveria haver!), você poderá tentar o padrão http.

Se você quiser ler respostas específicas, terá que abrir um soquete e ler/gravar dados manualmente.

<?php
$sock = fsockopen($hostname, $port);
?>

Então você terá que transferir/fread os dados para frente e para trás.
Isso exigirá que você leia sobre o protocolo FTP.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top