php – 获取大量文件列表,按文件时间排序*毫秒*
发布时间:2020-12-13 16:23:50 所属栏目:PHP教程 来源:网络整理
导读:我知道我的文件系统正在以毫秒为单位存储文件修改时间,但我不知道通过 PHP访问该信息的方式.当我做一个ls -full-time我看到这样: -rw-r--r-- 1 nobody nobody 900 2012-06-29 14:08:37.047666435 -0700 file1-rw-r--r-- 1 nobody nobody 900 2012-06-29 14:
我知道我的文件系统正在以毫秒为单位存储文件修改时间,但我不知道通过
PHP访问该信息的方式.当我做一个ls -full-time我看到这样:
-rw-r--r-- 1 nobody nobody 900 2012-06-29 14:08:37.047666435 -0700 file1 -rw-r--r-- 1 nobody nobody 900 2012-06-29 14:08:37.163667038 -0700 file2 我假设点后的数字是毫秒. 所以我意识到我可以使用ls,并按照修改时间排序,如下所示: $filelist = `ls -t`; 然而,目录有时会有大量的文件,我注意到在这种情况下,ls可能很慢. 相反,我一直在使用find,但是没有一个按照修改时间排序结果的开关.以下是我现在正在做的一个例子: $filelist = `find $dir -type f -printf "%T@ %pn" | sort -n | awk '{print $2}'`; 而且,当然,这并不排除到毫秒,因此在同一秒钟内创建的文件有时以错误的顺序列出.
只有几个文件系统(如EXT4)实际上将这些时间存储到纳秒精度.这不是保证可用的东西,在其他文件系统(如EXT3)上,您会注意到小数部分为.000000000
现在,如果这个功能对你来说非常重要,你可以编写一个专门的PHP扩展.这将绕过对外部实用程序的调用,并且应该更快.创建扩展的过程在许多地方如here进行了很好的解释.对这种扩展的合理方法可能是一种替代的fstat函数实现,它暴露了/usr/include / bits / stat.h如今. 像往常一样,没有什么是免费的.此扩展将必须保留,可能无法让它在托管环境中运行等等.此外,您的php解决方案将仅在部署扩展的服务器上运行(尽管可以通过回到基于ls的技术来规避如果未检测到扩展名). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |