php файл существует проблема - 1000 файлов - PullRequest
0 голосов
/ 21 мая 2011

У меня есть папка, содержащая более 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() продолжали работать, пока все файлы не будут проверены?

Ответы [ 2 ]

3 голосов
/ 21 мая 2011

Вы уверены, что это не время ожидания сценария?Отметьте 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>";
}
?>
3 голосов
/ 21 мая 2011

Как у вас работает скрипт? Если это происходит при попадании на веб-страницу, возможно, ваш сервер ограничивает время выполнения скрипта примерно через 30 секунд и после этого убивает PHP, что приводит к внутренней ошибке сервера. То же самое может быть верно, если он запускается через cron, но это менее вероятно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...