Home  >  Article  >  Backend Development  >  Delete files based on file records in the database

Delete files based on file records in the database

WBOY
WBOYOriginal
2016-07-25 09:11:321129browse
Determine whether the fields in the database correspond to the files in the folder. If there is no correspondence, delete the files, which greatly reduces the occupation of system resources.
  1. //Created on 2010-4-24 Made by Wolf QQ116311316
  2. //Function: It is to determine whether the fields in the database correspond to the files in the folder. If there is no correspondence
  3. //then Deleting files greatly reduces system resource usage.
  4. //$dir is the file directory to be searched
  5. //$table is the table to be searched
  6. //$field is the field name
  7. //================ ====
  8. function delfile($dir = "",$table,$field){
  9. //Get the files in the directory
  10. if (is_dir($dir)) {
  11. if ($dh = opendir($ dir)) {
  12. while (($file = readdir($dh)) !== false) {
  13. if($file!="."&&$file!=".."){
  14. $exit[ ]=$file;}
  15. }
  16. closedir($dh);
  17. }
  18. }
  19. //Get the file image address in the database
  20. $sql="select $field from $table";
  21. $query=mysql_query ($sql);
  22. while($row=mysql_fetch_array($query)){
  23. $pic[]=$row[pic];
  24. }
  25. //The function here is very important. array_diff_key was originally used. There seems to be something wrong
  26. $result = @array_diff($exit, $pic);
  27. if($result==null){
  28. echo "You have no files to delete";
  29. }
  30. foreach($result as $id=>$values){
  31. echo "The file deleted by the system is ".$values."
    ";
  32. $file=$dir.$values;
  33. unlink("$file") ;
  34. }
  35. }
  36. ?>
Copy code


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn