从 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() 等获取读取文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 fread 和 fwrite 从文件中读取 pcm 样本?