Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Opencart删除图像/缓存不起任何作用_Php_Image_Caching_Opencart - Fatal编程技术网

Php Opencart删除图像/缓存不起任何作用

Php Opencart删除图像/缓存不起任何作用,php,image,caching,opencart,Php,Image,Caching,Opencart,我在Opencart缓存映像方面遇到了一些严重问题。我有一个与Opencart同步信息(产品、类别)的软件 每当我更新一个已经有图像的产品时,我都会(在FTP中)替换该图像,因为它具有相同的描述(id) 等等。发生的情况是Opencart在第一次同步时继续使用相同的图像集。这不是浏览器问题,因为不同的浏览器显示相同的第一次图像同步 Opencart会在打开产品页面时强制图像调整大小,并根据图像大小创建一个新的内部文件,如19301-500x445.jpg仅当大小图像不存在时才会发生此情况 //

我在Opencart缓存映像方面遇到了一些严重问题。我有一个与Opencart同步信息(产品、类别)的软件

每当我更新一个已经有图像的产品时,我都会(在FTP中)替换该图像,因为它具有相同的描述(id)

等等。发生的情况是Opencart在第一次同步时继续使用相同的图像集。这不是浏览器问题,因为不同的浏览器显示相同的第一次图像同步

Opencart会在打开产品页面时强制图像调整大小,并根据图像大小创建一个新的内部文件,如
19301-500x445.jpg
仅当大小图像不存在时才会发生此情况

// Within the file catalog/model/tool/image

$image_old = $filename;
$image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '.' . $extension;

if (!is_file(DIR_IMAGE . $image_new) || (filectime(DIR_IMAGE . $image_old) > filectime(DIR_IMAGE . $image_new))) 
{ 
}
我可以通过在文件名中设置
time()
来避免缓存问题,但通过这种方式,opencart将不断创建不必要的新图像

$image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '-' . time() . '.' . $extension;

删除
image/cache/myfolder/*
不会产生任何影响。

已解决。

将我的功能更改为以下内容:

if(filectime(DIR_IMAGE . $image_old) > filectime(DIR_IMAGE . $image_new) || !file_exists(DIR_IMAGE . $image_new))
{   
    if(file_exists(DIR_IMAGE . $image_new))
        $image_new  = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '-' . time() . '.' . $extension;
}
这样,它只生成一次图像

if(filectime(DIR_IMAGE . $image_old) > filectime(DIR_IMAGE . $image_new) || !file_exists(DIR_IMAGE . $image_new))
{   
    if(file_exists(DIR_IMAGE . $image_new))
        $image_new  = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '-' . time() . '.' . $extension;
}