PHP-чтение файла с удаленного сервера

Итак, у меня есть два сервера CentOS.

на server1 у меня лог в директории /home/something/logs/latest.log

на server2 у меня есть сервер apache, и я хочу, чтобы он читал журнал на server1.

Мне нужно сделать это, потому что я хочу сделать консоль реального времени, отображающую данные из журнала на server1

Я получу данные из журнала в одном файле PHP, а затем сделаю ajax в другом файле, а затем у меня есть журнал в реальном времени.

мой вопросы:

Как я могу прочитать файл с удаленного сервера с php?

кто-нибудь знает лучшее решение?

26
задан Hennes
12.02.2023 18:01 Количество просмотров материала 2663
Распечатать страницу

1 ответ

быстрый визит в PHP docs скажет вам, что это невероятно легко сделать: -)

но в общем, все, что вам нужно сделать, это:

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

Примечание: хотя... чтобы это сработало, вам понадобится, чтобы этот файл был доступен через веб-сервер, работающий на server1, так как это статический файл, а затем установить что-то вроде NginX и просто поместить doc в корень по умолчанию (или указать корень по умолчанию в домашней папке) будет достаточно, чтобы вы могли использовать PHP get-файл содержание разговора.

Если, поставив веб-сервер на server1 не вариант, то по существу Ваш будет иметь, чтобы следовать этим шагам.

  • подключение к server1 с помощью SSH/Telnet, или одного из удаленных utils копирования, или настроить FTP-сервер и указать его в домашнюю папку.

  • используйте один из многих методов подключения PHP (который зависит от сервиса, который вы chhose выше)

  • затем создать сценарий, который подключается с помощью выбранного метода подключения на Шаге 2, автоматизирует все необходимые параметры и подключается.

  • после подключения выполните все необходимые команды (в зависимости от используемого метода подключения) для захвата файла и его содержимого.

  • отключиться от сервера и обработать файл.

С SSH, вам нужно будет использовать функции SSH2, встроенные в PHP (опять же, doc находятся на php.net), theres a класс задокументирован там можно использовать.

для Telnet, аналогичная разница, но А) я бы не рекомендовал его и б) вам нужно будет сделать много кода для поддержки протокола telnet через сырые сокеты.

для FTP, ну PHP имеет (и имеет в течение длительного времени) была поддержка FTP запеченный в, но, как и с веб-сервером, вам нужно установить и настроить FTP, а затем обеспечить его и все, что джаз, если вы собираетесь сделать это, то легче получить его работу с веб-сервером.

за это, ну вы могли бы принять философию *nix многих небольших инструментов, и использовать exec и системные вызовы для запуска программ из вашего дистрибутива Linux, таких как "rcopy", "sftp" и многие другие, но опять же это довольно задача, чтобы знать, что автоматизировать, где и как.

у вас также есть возможность написать свой собственный нерегламентированный сервер, который слушает сокет и отправляет журнал при подключении.

наконец, вы также можете поделиться папкой с помощью NFS или Samba, а затем просто использовать обычные вызовы открытия/чтения/закрытия файлов, как если бы файл был локальным, но тогда вам нужно настроить пользователей, общие ресурсы, авторизацию и многое другое.

какой маршрут вы идете, зависит от того, сколько работы вы готовы сделать, и какие ограничения вы делаете/не имеют мешает вам использовать любой из методов, изложенных здесь.

мой совет, однако, перейдите к методу веб-сервера, используйте NginX, minimal config, запечатайте сервер файлов журналов за закрытыми дверями и позвольте php делать то, что хорошо, и захватите файл по http.

4
отвечен shawty 2023-02-14 01:49

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх