PHP - arquivo de leitura do servidor remoto

1

Então eu tenho dois servidores CentOS.

No server1 eu tenho um log no diretório /home/something/logs/latest.log

No server2 eu tenho meu servidor apache, e quero que ele leia o log no server1.

Eu preciso fazer isso porque eu quero fazer um console em tempo real, exibindo dados do log no servidor1

Eu vou pegar os dados do log em um arquivo PHP e então fazer um ajax em outro arquivo e então eu tenho um log em tempo real.

Minhas perguntas:

Como posso ler um arquivo de um servidor remoto com php?

Alguém conhece uma solução melhor?

    
por user3524823 18.07.2014 / 17:06

1 resposta

4

Uma visita rápida aos documentos PHP irá dizer-lhe que é incrivelmente fácil de fazer: -)

Mas, em resumo, tudo o que você precisa fazer é:

$myfile = file_get_contents("http://server1/blah/blah/file.log");

Nota: embora ... para que isso funcione, você precisará que o arquivo seja acessível, por meio de um servidor da Web em execução no servidor1, já que é um arquivo estático, instalando algo como NginX e apenas colocando o documento no padrão root (ou apontar a raiz padrão na pasta home) será o suficiente para permitir que você use o PHP para obter o conteúdo do arquivo.

Se, colocar um servidor web no server1 NÃO for uma opção, então essencialmente você terá que seguir estes passos.

  • Conecte-se ao servidor1 usando algo como SSH / Telnet, ou um dos utilitários de cópia remota, ou configure um servidor FTP e aponte-o para sua pasta pessoal.

  • Use um dos muitos métodos de conexão do PHP (Qual deles depende do serviço que você escolheu acima)

  • Em seguida, crie um script que se conecte usando o método de conexão selecionado na etapa 2, automatize os parâmetros necessários e conecte-se.

  • Uma vez conectado, emita todos os comandos necessários (dependendo do método de conexão usado) para capturar o arquivo e seu conteúdo.

  • Desconecte-se do servidor e processe o arquivo.

Com o SSH, você precisará usar as funções do SSH2 embutidas no PHP (Novamente, os documentos estão no php.net), há uma classe documentada lá que você pode usar.

Para o Telnet, diferença semelhante, mas A) Eu não recomendaria isso e B) você precisaria fazer um monte de código para suportar o protocolo telnet em sockets raw.

Para FTP, o PHP tem (e tem há muito tempo) suporte ao FTP, mas como em um servidor web, você precisa instalar e configurar o FTP, então prendê-lo e todo esse jazz, se você vai fazer isso, então é mais fácil fazê-lo funcionar com um servidor web.

Além disso, você pode adotar a filosofia * nix de muitas ferramentas pequenas e usar exec e chamadas do sistema para executar programas da sua distribuição Linux, como 'rcopy', 'sftp' e muitos outros, mas novamente isso é bastante uma tarefa, saber o que automatizar, onde e como.

Você também tem a opção de escrever seu próprio servidor ad-hoc, que escuta em um soquete e envia o log quando uma conexão é feita.

Por último, você poderia também compartilhar uma pasta usando o NFS ou o Samba, então basta usar o arquivo normal abrir / ler / fechar chamadas como se o arquivo fosse local, mas então você tem que configurar usuários, compartilhamentos, auth e uma carga de outras coisas.

Qual caminho seguir, depende de quanto trabalho você deseja fazer e quais restrições você faz / não impede que você use qualquer um dos métodos descritos aqui.

Meu conselho, vá para o método do servidor web, use NginX, configuração mínima, sele o servidor de arquivos de log a portas fechadas e deixe o php fazer o que é bom, e pegue o arquivo em http.

    
por 18.07.2014 / 18:07