| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Насколько быстра функция file_exists()? |
| Автор: Psytodelist 14.6.2011, 19:41 |
| Здравствуйте! Хотелось бы узнать насколько быстра функция file_exists() и как влияет на скорость её выполнения количество обрабатываемых ею файлов в директории. Дело в том, что у меня есть скрипт загрузки фотографий, а фотографии придается уникальный id md5(uniqid(rand(),1)) хотелось бы на всякий случай сделать проверочно-переименовательный цикл типа: пока (файла с таким именем в директории есть) делай { если (есть такой файл) {переименуй этот файл на id md5(uniqid(rand(),1))} } Насколько сильно повлияет на скорость выполнения скрипта подобная конструкция при условии, что фотографий в директории относительно много? |
| Автор: Psytodelist 15.6.2011, 00:04 | ||
Позволяет. А как это сделать, не подскажите? |
| Автор: Shogun 15.6.2011, 00:19 | ||
Но если собирается очень много файлов, то лучше разбить их по поддиректориям. |
| Автор: Psytodelist 15.6.2011, 07:00 |
| Shogun, в очередной раз даёте дельные советы. С уважением. Добавлено через 9 минут и 20 секунд Shogun, а имеет ли смысл вообще делать подобную проверку в цикле, если я даю файлам имя md5(uniqid(rand(),1)) и бросаю их в поддериктории, которые создаются относительно даты. Все говорят: "Не мучайся, не думай.... вероятность повторов крайне мала". Все-равно как-то 32 символа с расстановкой по 1234567890abcdef не на шутку дает усомнится в подобных советах. |
| Автор: s0lman 15.6.2011, 10:51 |
Операция не настолько быстрая, чтобы проверка file_exists() ее существенно замедлила (если не 30 тыс файлов в 1 папке лежит) Второй момент. Если фотографии загружаются, то, подозреваю, имена файлов где-то в таблице сохраняются - что мешает сделать выборку из базы вместо просмотра списка файлов? (если нет, то можно создать) Если быстродействие уж очень критичное, то можно прикрутить мемкеш) |
| Автор: Absinthe 15.6.2011, 12:06 |
| Советую загружаемые фото раскладывать по разным каталогам(например на 256 на основе первых 2х символов хэша имени) т.к. наличие множества файлов в одном каталоге сильно замедляет работу всех популярных ФС. |
| Автор: Psytodelist 16.6.2011, 05:52 | ||
Нет, как раз работу с БД я решил избежать при загрузке фотографий. Загрузка идет через аякс, который возвращается массив названий загруженных фото и вставляет их в захайденый инпут. Во время выполнения заказа идет внесение этого массива и информации о заказчике в БД. Фотографии - в одну таблицу с уникальным ИД, а информацию о заказе в другую с соответствующей ссылкой в виде уникального идентификатора массива фотографий, которые были загружены перед отсылкой данного заказа. |
| Автор: solenko 16.6.2011, 07:03 | ||
Т.е. клиент передумал, и мы получили подвисшие файлы, о которых нет никакой информации в системе. Как чистить -- хз... Не очень удахный вариант, как по мне |
| Автор: Shogun 16.6.2011, 11:55 | ||||||
Ну так в чем собственно проблема? Для чего Вам нужен file_exists?? Если фотография попала в этот массив я так понимаю она загружена и нет смысла в file_exists.
Зачем Вам переименовать файлы уже после того как они загружены а не сразу?
|