PHP: leer archivos desde un servidor remoto

PHP: leer archivos desde un servidor remoto

Entonces tengo dos servidores CentOS.

En el servidor1 tengo un registro en el directorio/home/something/logs/latest.log

En el servidor2 tengo mi servidor Apache y quiero que lea el registro en el servidor1.

Necesito hacer esto porque quiero crear una consola en tiempo real, que muestre datos del registro en el servidor1.

Obtendré los datos del registro en un archivo PHP y luego haré algo de ajax en otro archivo y luego tendré un registro en tiempo real.

Mis preguntas:

¿Cómo puedo leer un archivo desde un servidor remoto con php?

¿Alguien conoce una solución mejor?

Respuesta1

Una visita rápida a los documentos PHP le dirá que es increíblemente fácil de hacer :-)

Pero en resumen, todo lo que necesitas hacer es:

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

Nota: sin embargo... para que esto funcione, necesitará que se pueda acceder a ese archivo, a través de un servidor web que se ejecute en el servidor1, ya que es un archivo estático, luego instalará algo como NginX y simplemente colocará el documento en la raíz predeterminada (o apuntar la raíz predeterminada a la carpeta de inicio) será suficiente para permitirle utilizar la llamada PHP para obtener el contenido del archivo.

Si poner un servidor web en el servidor 1 NO es una opción, entonces básicamente tendrás que seguir estos pasos.

  • Conéctese al servidor1 usando algo como SSH/Telnet, o una de las utilidades de copia remota, o configure un servidor FTP y apúntelo a su carpeta de inicio.

  • Utilice uno de los muchos métodos de conexión de PHP (cuál depende del servicio que elija anteriormente)

  • Luego cree un script que se conecte utilizando el método de conexión seleccionado en el paso 2, automatice los parámetros necesarios y se conecte.

  • Una vez conectado, emita los comandos necesarios (según el método de conexión utilizado) para capturar el archivo y su contenido.

  • Desconéctese del servidor y procese el archivo.

Con SSH, necesitarás usar las funciones SSH2 integradas en PHP (nuevamente, los documentos están en php.net), hay una clase documentada allí que puedes usar.

Para Telnet, una diferencia similar, pero A) no lo recomendaría y B) necesitaría hacer mucho código para admitir el protocolo telnet a través de sockets sin formato.

Para FTP, bueno, PHP tiene (y lo ha hecho durante mucho tiempo) soporte FTP incorporado, pero al igual que con un servidor web, necesitarás instalar y configurar FTP, luego protegerlo y todo eso, si vas a Haga esto, entonces será más fácil hacerlo funcionar con un servidor web.

Más allá de eso, bueno, podrías adoptar la filosofía *nix de muchas herramientas pequeñas y usar llamadas ejecutivas y al sistema para ejecutar programas desde tu distribución de Linux, como 'rcopy', 'sftp' y muchos otros, pero nuevamente, eso es toda una tarea. saber qué automatizar, dónde y cómo.

También tiene la opción de escribir su propio servidor ad-hoc, que escucha en un socket y envía el registro cuando se realiza una conexión.

Por último, también podría compartir una carpeta usando NFS o Samba, luego simplemente usar llamadas normales de apertura/lectura/cierre de archivos como si el archivo fuera local, pero luego debe configurar usuarios, recursos compartidos, autenticación y un montón de otras cosas.

La ruta que elija dependerá de cuánto trabajo esté dispuesto a hacer y de las restricciones que tenga o no que le impidan utilizar cualquiera de los métodos descritos aquí.

Sin embargo, mi consejo es seguir el método del servidor web, usar NginX, configuración mínima, sellar el servidor de archivos de registro a puerta cerrada y dejar que php haga lo que se le da bien y tomar el archivo a través de http.

información relacionada