php文件存在问题 - 1000个文件

时间:2011-05-21 10:19:33

标签: php validation file

我有一个包含1000多个子文件夹的文件夹。在每个子文件夹中有1-800个图像,以及具有相同数量的较小版本的thumb文件夹。总共有大约18000张照片和18000张大拇指

我创建了一个偶尔运行的脚本来检查是否所有内容都存在(所有路径,文件夹和照片名称都存储在数据库中)。

使用file_exist()is_file()加上clearstatcache(),我会对我的数据库记录运行一个循环来检查一切是否正常。

要检查脚本是否真的有效,我在表结构中包含了一个检查字段:

photo_present, SET(Y,N)

每次运行脚本时,每张经过验证的照片都会将photo_present标记设置为Y

只有少数记录300-800后,脚本会发出内部服务器错误500。

我检查了我的表格,我知道该脚本已运行一段时间,因为我看到photo_present字段设置为Y

我的问题是如何对其进行优化,以便file_exist()is_file()继续有效,直到检查完所有文件为止?

2 个答案:

答案 0 :(得分:3)

你是如何运行脚本的?如果是通过访问网页,可能是您的服务器在30秒左右的时间内限制了脚本的运行时,并在此之后杀死了PHP,从而导致内部服务器错误。如果它是通过cron运行的话也是如此,但这种可能性不大。

答案 1 :(得分:3)

您确定这不是脚本超时吗?查看http://php.net/manual/en/function.set-time-limit.php

我自己认为在浏览文件夹和文件时,glob是一个很好的选择,你可能能够找到一些东西。

<?php
//get all image files 
$files = glob("{*.jpg,*.JPG,*.gif,*.GIF,*.png,*.PNG,*.cr2,*.CR2,*.DNG,*.dng}", GLOB_BRACE);

//print each file name
foreach($files as $file)
{
    //Do your db validation here.
    //echo "<a href=\"$file\" style=\"display:block;\">$file</a>";
}
?>