欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > php >内容正文

php

PHP无用图片清理,php – 如何在img / p /上删除Prestashop无用的图像

发布时间:2023/12/18 php 30 豆豆
生活随笔 收集整理的这篇文章主要介绍了 PHP无用图片清理,php – 如何在img / p /上删除Prestashop无用的图像 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在Prestashop,当我删除一些产品时,图像保留在他们的目录/ img / p / so,此时我的图像目录接近2GB.

找到这个脚本来删除Prestashop上无用的和BBDD未链接的图像,但我不知道为什么它只检测孤立图像但不删除它们.也许在php配置上禁用unlink功能?可能吗?或者代码错了?还有另一种方法可以进行这种清理吗?

// root path of the shop

$shop_root='/home/myweb/public_html/';

// limit number of image files to check, set to 10 for testing

$limit=1000000000;

include $shop_root . '/config/settings.inc.php';

$pdo = new PDO( 'mysql:host='._DB_SERVER_.';dbname='._DB_NAME_, _DB_USER_, _DB_PASSWD_ );

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$r=$pdo->query('select count(1) cnt from ps_image')->fetch();

echo 'count images database: '.$r['cnt'] . "
";

// reset some counters

$cnt_files=0;

$cnt_checked=0;

$cnt_not_found=0;

$cnt_found=0;

for($ii=1; ($ii<=9) && ($cnt_files != $limit); $ii++)

{

$path=$shop_root.'img/p/'.$ii;

delImage($path);

for($jj=0; ($jj<=9) && ($cnt_files != $limit); $jj++)

{

$path=$shop_root.'img/p/'.$ii.'/'.$jj;

delImage($path);

for($kk=0; ($kk<=9) && ($cnt_files != $limit); $kk++)

{

$path=$shop_root.'img/p/'.$ii.'/'.$jj.'/'.$kk;

delImage($path);

for($ll=0; ($ll<=9) && ($cnt_files != $limit); $ll++)

{

$path=$shop_root.'img/p/'.$ii.'/'.$jj.'/'.$kk.'/'.$ll;

delImage($path);

}

}

}

}

echo 'files: '.$cnt_files.' checked: '.$cnt_checked.' not_found: '.$cnt_not_found.' found: '.$cnt_found;

function delImage($imageDir)

{

global $limit, $pdo, $cnt_files, $cnt_checked, $cnt_not_found, $cnt_found;

if ($handle = @opendir($imageDir)) { //@ is wriiten to avoid warning message and is handled in else condition

echo $imageDir."
";

while ($cnt_files != $limit && false !== ($entry = readdir($handle))) {

if ($entry != "." && $entry != "..") {

$cnt_files++;

$pi = explode('-',$entry);

if($pi[0]>0 && !empty($pi[1])) {

$cnt_checked++;

if(!checkExistsDb($pdo,$pi[0])) {

$cnt_not_found++;

echo 'rm '.$imageDir.'/'.$entry."
";

unlink($imageDir.'/'.$entry);

} else {

$cnt_found++;

}

}

}

}

closedir($handle);

}

else

{

echo $imageDir." doesn't exist".'
';

}

}

function checkExistsDb($pdo, $id_image) {

$r=$pdo->query($q='select \'ok\' ok, (select id_image from ps_image where id_image = '.(int)$id_image.') id_image');

$row=$r->fetch();

if($row['ok']!='ok') die( 'Problem with query, please correct');

return $row['id_image']?true:false;

}

?>

这是一个输出部分:

/home/myweb/public_html/img/p/9/9/7

/home/myweb/public_html/img/p/9/9/7/0 doesn't exist

/home/myweb/public_html/img/p/9/9/7/1 doesn't exist

/home/myweb/public_html/img/p/9/9/7/2 doesn't exist

/home/myweb/public_html/img/p/9/9/7/3 doesn't exist

/home/myweb/public_html/img/p/9/9/7/4 doesn't exist

/home/myweb/public_html/img/p/9/9/7/5 doesn't exist

/home/myweb/public_html/img/p/9/9/7/6 doesn't exist

/home/myweb/public_html/img/p/9/9/7/7 doesn't exist

/home/myweb/public_html/img/p/9/9/7/8 doesn't exist

/home/myweb/public_html/img/p/9/9/7/9 doesn't exist

/home/myweb/public_html/img/p/9/9/8

/home/myweb/public_html/img/p/9/9/8/0 doesn't exist

/home/myweb/public_html/img/p/9/9/8/1 doesn't exist

/home/myweb/public_html/img/p/9/9/8/2 doesn't exist

/home/myweb/public_html/img/p/9/9/8/3 doesn't exist

/home/myweb/public_html/img/p/9/9/8/4 doesn't exist

/home/myweb/public_html/img/p/9/9/8/5 doesn't exist

/home/myweb/public_html/img/p/9/9/8/6 doesn't exist

/home/myweb/public_html/img/p/9/9/8/7 doesn't exist

/home/myweb/public_html/img/p/9/9/8/8 doesn't exist

/home/myweb/public_html/img/p/9/9/8/9 doesn't exist

/home/myweb/public_html/img/p/9/9/9

/home/myweb/public_html/img/p/9/9/9/0 doesn't exist

/home/myweb/public_html/img/p/9/9/9/1 doesn't exist

/home/myweb/public_html/img/p/9/9/9/2 doesn't exist

/home/myweb/public_html/img/p/9/9/9/3 doesn't exist

/home/myweb/public_html/img/p/9/9/9/4 doesn't exist

/home/myweb/public_html/img/p/9/9/9/5 doesn't exist

/home/myweb/public_html/img/p/9/9/9/6 doesn't exist

/home/myweb/public_html/img/p/9/9/9/7 doesn't exist

/home/myweb/public_html/img/p/9/9/9/8 doesn't exist

/home/myweb/public_html/img/p/9/9/9/9 doesn't exist

files: 29013 checked: 22290 not_found: 0 found: 22290

总结

以上是生活随笔为你收集整理的PHP无用图片清理,php – 如何在img / p /上删除Prestashop无用的图像的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。