【发布时间】:2022-01-22 23:13:30
【问题描述】:
所以我制作了一个 FTP 服务器,我可以将文件上传到它。但现在我想显示一个.log 文件内容(纯文本),但我似乎无法理解应该如何完成。
我用这个函数做了一个类,可以看到上传的文件存在,但是如何打印4404.log的内容呢?
function FTP_read(){
ob_end_flush();
$conn_id = ftp_connect($this->ftp_server);
$login_result = ftp_login($conn_id, $this->ftp_user_name, $this->ftp_user_pass);
// get contents of the current directory
$contents = ftp_nlist($conn_id, ".");
// output $contents
var_dump($contents);
}
我以为我可以使用ftp_get(),但为什么我必须写入另一个文件?
ftp_get() retrieves a remote file from the FTP server, and saves it into a local file.
预计会得到这样的东西(打印日志内容):
【问题讨论】:
-
关于你为什么要写作的问题。这就是 FTP 的工作原理,例如,如果您使用 Filezilla,它会创建一个临时文件并将内容写入文件以读取它。你可以做类似的事情。使用 tmpfile() 创建一个临时文件,然后下载内容并写入其中,然后输出所有内容并删除文件
-
@VitalijMik + CBroe – 这都不意味着您必须将内容下载到物理本地文件,如果您不需要的话。完全可以使用 FTP 将远程文件内容仅下载到本地内存。
-
@MartinPrikryl 是的,这行得通,但是否可以逐行阅读,而不是在一行中全部转储?
-
它不会“在一行中全部转储”。无论如何,你的目标是什么?您只是在问如何将内容拆分为单独的行吗?还是您问是因为内容太大而无法放入内存,所以您必须逐行处理?您的问题询问如何打印内容。如果您有更具体的需求,您应该相应地编辑您的问题。
-
@MartinPrikryl 现在文件不是太大,但我不知道它们是否会在功能中。但是日志中的每一行都包含不同的信息,比如每 10 行可能是
DEBUG...,所以我想要逐行的文件,所以我以后要在日志上创建一些 JS 行过滤时有更多的控制权,因此可以从文本等中隐藏所有DEBUG...行。