Re: File Removal after Database Comparison
- From: "J.O. Aho" <user@xxxxxxxxxxx>
- Date: Fri, 04 Apr 2008 19:28:42 +0200
Chris Owens wrote:
I'm trying to figure the logic (and therefor the code) to enable the clean-up of a site I've inherited. Basically I have a folder that has around 6,666 images in it that are loosely related to the information held in a database. I say loosely because the images are uploaded (via FTP) manually. There is no direct reference to the JPEGs in the database, as the code on the site references them via:
<img src="<?=echo ($referenceid); ?>_f.jpg" />
<img src="<?=echo ($referenceid); ?>_s.jpg" />
<img src="<?=echo ($referenceid); ?>_b.jpg" />
Each record in the database has three related images:
Image of the front - recordid_f.jpg
Image of the side - recordid_s.jpg
Image of the back - recordid_b.jpg
Now over time records have been removed from the database, but the images haven't been removed and as such, short of removing all images, there is no easy way that I can think of to clear the folder (several GB of data) whilst keeping the images that have related records in the db.
<?php
ob_end_flush();
$mysqli= new mysqli('localhost','login','pass','db');
$refid=explode("\n",shell_exec("ls -1 | sed 's/jpg//g'"));
foreach($refid AS $id) {
echo "Cheking {$id}: ";
$query="SELECT COUNT(*) FROM table_name WHERE recordid='{$id}'";
$res=$mysqli->query($query);
if(!$res->num_rows) {
echo "delete old files.";
//delete all three files at once
exec("rm -f {$id}_[bfd].jpg");
} else {
echo "Still active, we keep them";
}
echo (empty($_SERVER['SERVER_ADDR'])?'':'<br>')."\n";
}
$mysqli->close();
?>
This should take care of the whole thing for you, I do suggest you do run it once with the exec("rm -f {$id}_[bfd].jpg"); commented out, that way you can check if the deletion would be correct. This one uses mysqli, but if you don't use it or even another database, then just modify the code a little bit.
You could change the exec() line and move the old images to a new directory instead, that way if there would be something wrong with the script, then you still would have the images and can move those back that was faulty removed.
--
//Aho
.
- References:
- File Removal after Database Comparison
- From: Chris Owens
- File Removal after Database Comparison
- Prev by Date: Re: Trouble auto-submitting a form with CURL
- Next by Date: Re: File Removal after Database Comparison
- Previous by thread: Re: File Removal after Database Comparison
- Next by thread: Re: File Removal after Database Comparison
- Index(es):
Relevant Pages
|