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

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

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

【问题讨论】:

    标签: php


    【解决方案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”挂载选项。
    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    相关资源
    最近更新 更多