gpt4 book ai didi

php - 删除大量文件

转载 作者:IT王子 更新时间:2023-10-29 01:14:14 26 4
gpt4 key购买 nike

我的/tmp 中有 800 万个文件,我需要删除它们。该服务器还运行着非常重要的应用程序,我不能让它过载。

我正在使用小型 php 脚本:

<?php
$dir = "/tmp";
$dh = opendir( $dir);
$i = 0;
while (($file = readdir($dh)) !== false) {
$file = "$dir/$file";
if (is_file( $file) && (preg_match("/open/", $file))) {
unlink( $file);
#echo $file;
if (!(++$i % 10000)) {
echo "$i files removed\n";
}
}
}
?>

但它使我的应用程序无法访问,即使是:$ ionice -c 3 php ./tmp_files_killer.php$ nice -n 20 php ./tmp_files_killer.php

我已经更改了我的脚本,所以它不会一直读取/tmp 目录:

$ ls -1 /tmp > tmp_files_list.txt

<?php
$file = "tmp_files_list.txt";
$infile = fopen($file, "r");

while ( !feof( $infile ) ) {
$line = rtrim( fgets( $infile ), "\n\r" );
if ($line != null){
$file = "$dir/$line";
unlink( $file);
if (!(++$i % 10000)) {
echo "$i files removed\n";
}
# echo $line + "\n";
}
}
?>

但是运行这个脚本也会减慢我的应用程序。进程不加载 CPU,我有足够的内存。

大佬们,这些文件怎么删除?

最佳答案

您可以让脚本在“ block ”中运行,然后在每个 block 之间休眠。

在您的第二个版本中,您可以在 echo 之后添加一个 sleep(),比如 30 秒。如果您调整删除的文件数量和休眠时间,它应该保持服务器响应,同时仍然充分执行。

将来,您应该定期从 cron 运行清理作业,以防止自己达到这一点。

关于php - 删除大量文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10008807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com