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


php file exists problem - 1000's of files

我有一个包含1000+子文件夹的文件夹。每个子文件夹中有 1-800 张图像,外加一个具有相同数量的较小版本的拇指文件夹。总共有大约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()将继续工作,直到检查完所有文件?

你是如何运行脚本的?如果是点击网页,则可能是您的服务器将脚本的运行时间限制在 30 秒左右,并在该时间之后杀死 PHP,从而导致内部服务器错误。如果它通过 cron 运行,情况也可能如此,但这不太可能。

您确定这不是脚本超时吗?检查 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>";
}
?>