每天用户上传超过一个月的文件都会从服务器上删除。用户上传按日存储到目录中(如/var/www/media/2013-03-13),因此很容易识别需要删除的文件/目录。
问题:一次删除10万个文件会使服务器没有响应,需要很长时间。(Ubuntu12.04带有2x2TB ext4 SATA3 RAID1软件中的hdd )。目前,PHP正在对命令exec执行find /path/to/dir -maxdepth 1 -name '*' -delete。
如何分割删除所需的文件?在这些大型目录上执行ls将花费很长时间。
解决方案不需要在PHP中。它甚至不需要将文件拆分成更小的批。
发布于 2013-03-14 14:09:09
rm -rf你从3得到的目录。我不确定这是否比您的方法更快,但它避免显式列出目录中的所有文件。
发布于 2013-03-14 14:07:40
诀窍不是读取所有文件,而是使用readdir逐个读取它们。有关Perl解决方案,请参见Perl到拯救:删除一个大目录的案例研究。
https://stackoverflow.com/questions/15411436
复制相似问题