TimThumb缓存目录问题

时间:2013-02-06 作者:Argus

我有一个有9000个帖子的网站,这些帖子有外部图像,它们没有存储在我的服务器上。这些帖子有拇指显示在主页上。

我的问题是:每当有人访问该站点时,都会通过以下方式在缓存目录中创建许多文本文件:thumb.php 如果我的所有帖子都有特色的话,它们会上升到9000条。缓存目录中只有文本文件,它们不会以任何方式自动清除。如何使它们自动清除?GoDaddy不允许在一个目录中存储超过1024个文件,因此他们今天早上向我发出了警告。我需要自动清除这些缓存文件夹。

我有(\'FILE_CACHE_ENABLED\', TRUE); 顺便说一句,如果这与此问题有关。我连碰都没碰thumb.php. 我的其他网站运行良好,它们的缓存中没有存储任何内容。

我还在线查看了TimThumb的配置页面。我试过了Timthumb Vulnerability Scanner, 我没有安装缓存插件,我也尝试创建cron作业计划,但在GoDaddy上,我只能在特定时间清除目录,而不能在达到特定大小时清除。GoDaddy允许最多10个cron作业,并且在cron作业之间最多有5分钟的时间运行。在这5分钟内,创建了1024多个文本文件,这对我来说是行不通的。但我相信一定有什么方法可以自动清理缓存?

拇指已经在其他地方托管。缓存只创建要识别的文本文件,但不清除它们。有人能帮我做这个漂亮的吗?请解释我需要一步一步地做什么,因为我在这方面的知识非常有限。

1 个回复
最合适的回答,由SO网友:stealthyninja 整理而成

检查或添加以下两个配置设置:

define(\'FILE_CACHE_TIME_BETWEEN_CLEANS\', 80000); // 8 seconds = automatic removal of files
define(\'FILE_CACHE_MAX_FILE_AGE\', 20000); // 2 seconds = max. age of file before removed

Update

也许在您的thumb.php 或者作为由cron执行的独立脚本来处理这个问题。它将删除缓存目录中早于30秒的文件。

<?php

$dir = \'/path/to/cache/\';

if ( is_dir( $dir ) ) {
    if ( $handle = opendir( $dir ) ) {
        while ( ( $file = readdir( $handle ) ) !== false ) {
            if ( time() - filemtime( $dir . $file ) >= 1800 ) {
                unlink( $dir . $file );
            }
        }
        closedir( $handle );
    }
}

?>

结束

相关推荐

你的观点是:TimThumb和WordPress缩略图?伟大的辩论

当谈到摘录时,你认为TimThumb或WordPress缩略图是最好的选择吗?为什么呢?答案不会评分(但可能会受到批评)。