从 fread()、file_get_contents() 等获取读取文件

Posted

技术标签:

【中文标题】从 fread()、file_get_contents() 等获取读取文件【英文标题】:Get read files from fread(), file_get_contents() etc 【发布时间】:2016-04-20 20:08:28 【问题描述】:

我有一个复杂的 Web 应用程序,它读取和写入大量文件(xml、css、js、jpg 等)。出于清理目的,在关闭函数中,我想记录使用 php 中的各种文件方法之一读取(和写入)的文件名,例如fread()、file_get_contents()、readfile() 等等。

我找不到类似 get_included_files() 的方法,而且我很确定没有简单的方法可以实现这一目标。但是有人知道可能更复杂的逻辑吗?

【问题讨论】:

【参考方案1】:

不,但您可以创建一个包装函数来为您记录所有这些信息。

<?

$__modifiedFiles = array();

function fetch_file($file) 
    global $__modifiedFiles;
    $__modifiedFiles[] = $file;
    return file_get_contents($file);


function get_modified_files() 
    global $__modifiedFiles;
    return $__modifiedFiles;

或者...也许您可以使用 incron 来捕获文件系统上发生的事件:

http://manpages.ubuntu.com/manpages/intrepid/man5/incrontab.5.html

或者...也许您可以使用find 命令递归查找修改过的文件:

How to recursively find and list the latest modified files in a directory with subdirectories and times?

【讨论】:

incrontab 方法看起来很有前途,虽然这里最复杂。也许我会选择包装器逻辑,因为这很简单并且无需第三方软件即可工作。 我最终每 10 分钟运行一次 PHP 脚本,检查文档根目录中所有文件的 fileatime(),将自上次执行后修改的文件名记录到数据库中的统计表中。唯一的问题是访问时间似乎并没有在每次读取时更新。可能是由于文件系统的“relatime”挂载选项。

以上是关于从 fread()、file_get_contents() 等获取读取文件的主要内容,如果未能解决你的问题,请参考以下文章

c语言fread函数的用法

fread()函数如何判断是不是到文件末尾?

R:使用 fread 或等价物从文件中读取随机行?

如何使用 fread 和 fwrite 从文件中读取 pcm 样本?

在linux下怎样用fread函数从输入端读取数据,输入的数据数不确定,就是从从终端想输多少就读多少那种

将二进制文件读取(fread)代码从 MATLAB 转换为 C#