
所以我有兩台 CentOS 伺服器。
在 server1 上,我在目錄中有一個日誌/home/something/logs/latest.log
在 server2 上我有我的 apache 伺服器,我希望它讀取 server1 上的日誌。
我需要這樣做,因為我想製作一個即時控制台,顯示來自 server1 上的日誌的數據
我將從一個 PHP 檔案中的日誌獲取數據,然後在另一個檔案中執行一些 ajax,然後我就有了即時日誌。
我的問題:
如何使用 php 從遠端伺服器讀取檔案?
有人知道更好的解決方案嗎?
答案1
快速存取 PHP 文件就會告訴您,這是非常容易做到的:-)
但總而言之,您需要做的就是:
$myfile = file_get_contents("http://server1/blah/blah/file.log");
注意:儘管如此…要使其工作,您需要透過在 server1 上運行的 Web 伺服器來存取該文件,因為它是靜態文件,然後安裝 NginX 之類的東西並將文檔放在預設根目錄中(或將預設根目錄指向主資料夾)就足以允許您使用PHP 取得檔案內容呼叫。
如果無法在 server1 上放置 Web 伺服器,那麼您基本上必須遵循以下步驟。
使用 SSH/Telnet 或遠端複製實用程式之一連接到 server1,或設定 FTP 伺服器並將其指向您的主資料夾。
使用 PHP 的多種連接方法之一(使用哪一種,取決於您在上面選擇的服務)
然後建立一個腳本,使用步驟 2 中選擇的連接方法進行連接,自動執行所需的任何參數,然後進行連接。
連接後,發出所需的任何命令(取決於所使用的連接方法)以獲取文件及其內容。
中斷與伺服器的連線並處理檔案。
使用 SSH,您需要使用 PHP 中內建的 SSH2 函數(同樣,文件位於 php.net 上),那裡有一個記錄的類別可供您使用。
對於 Telnet,有類似的區別,但是 A)我不推薦它,B)您需要編寫大量程式碼來支援原始套接字上的 telnet 協定。
對於 FTP,PHP 已經(而且很長一段時間)內建了 FTP 支持,但與 Web 伺服器一樣,您需要安裝和設定 FTP,然後保護它和所有這些爵士樂,如果您打算這樣做的話這樣做,然後更容易讓它與網頁伺服器一起工作。
除此之外,您還可以採用許多小工具的*nix 理念,並使用exec 和系統呼叫來運行Linux 發行版中的程序,例如“rcopy”、“sftp”和許多其他程序,但這又是一項艱鉅的任務,了解自動化什麼、在哪裡以及如何自動化。
您也可以選擇編寫自己的臨時伺服器,該伺服器偵聽套接字,並在建立連線時傳送日誌。
最後,您也可以使用 NFS 或 Samba 共用資料夾,然後只需使用正常的檔案開啟/讀取/關閉調用,就像該檔案是本機檔案一樣,但您必須設定使用者、共用、身份驗證和大量其他事情。
您選擇哪條路線取決於您願意做多少工作,以及您有/沒有哪些限制阻止您使用此處概述的任何方法。
不過我的建議是,採用 Web 伺服器方法,使用 NginX,最小配置,將日誌檔案伺服器關在門後,讓 php 做它擅長的事情,然後透過 http 抓取檔案。