我有一个有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多个文本文件,这对我来说是行不通的。但我相信一定有什么方法可以自动清理缓存?
拇指已经在其他地方托管。缓存只创建要识别的文本文件,但不清除它们。有人能帮我做这个漂亮的吗?请解释我需要一步一步地做什么,因为我在这方面的知识非常有限。
最合适的回答,由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 );
}
}
?>