Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Насколько быстра функция file_exists()? И как зависит от количества файлов 
:(
    Опции темы
Psytodelist
  Дата 14.6.2011, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 5.3.2010

Репутация: нет
Всего: нет



Здравствуйте! Хотелось бы узнать насколько быстра функция file_exists()
и как влияет на скорость её выполнения количество обрабатываемых ею
файлов в директории. Дело в том, что у меня есть скрипт загрузки
фотографий, а фотографии придается уникальный id md5(uniqid(rand(),1))
хотелось бы на всякий случай сделать проверочно-переименовательный цикл типа:

пока (файла с таким именем в директории есть) делай {
если (есть такой файл) {переименуй этот файл на id md5(uniqid(rand(),1))}
}

Насколько сильно повлияет на скорость выполнения скрипта подобная конструкция
при условии, что фотографий в директории относительно много?
PM MAIL   Вверх
solenko
Дата 14.6.2011, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(Psytodelist @  14.6.2011,  18:41 Найти цитируемый пост)
Хотелось бы узнать насколько быстра функция file_exists()

А померять религия не позволяет?

Цитата(Psytodelist @  14.6.2011,  18:41 Найти цитируемый пост)
и как влияет на скорость её выполнения количество обрабатываемых ею
файлов в директории.

плохо влияет. Насколько -- зависит от файловой систему (не уверен, что значительно)


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Psytodelist
Дата 15.6.2011, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 5.3.2010

Репутация: нет
Всего: нет



Цитата

А померять религия не позволяет?

Позволяет. А как это сделать, не подскажите?  smile 
PM MAIL   Вверх
Shogun
Дата 15.6.2011, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Цитата(Psytodelist @  15.6.2011,  00:04 Найти цитируемый пост)
Позволяет. А как это сделать, не подскажите?  smile  

Код

$start = microtime(true);

// Ваш код

echo microtime(true) - $start;


Но если собирается очень много файлов, то лучше разбить их по поддиректориям.  


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
Psytodelist
Дата 15.6.2011, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 5.3.2010

Репутация: нет
Всего: нет



Shogun, в очередной раз даёте дельные советы. С уважением.

Добавлено через 9 минут и 20 секунд
Shogun, а имеет ли смысл вообще делать подобную проверку в цикле, если я даю файлам
имя md5(uniqid(rand(),1)) и бросаю их в поддериктории, которые создаются относительно даты.
Все говорят: "Не мучайся, не думай.... вероятность повторов крайне мала". Все-равно
как-то 32 символа с расстановкой по 1234567890abcdef не на шутку дает усомнится в подобных советах.
PM MAIL   Вверх
s0lman
Дата 15.6.2011, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Цитата(Psytodelist @  14.6.2011,  19:41 Найти цитируемый пост)
есть скрипт загрузки
фотографий

Операция не настолько быстрая, чтобы проверка file_exists() ее существенно замедлила (если не 30 тыс файлов в 1 папке лежит)

Второй момент. Если фотографии загружаются, то, подозреваю, имена файлов где-то в таблице сохраняются - что мешает сделать выборку из базы вместо просмотра списка файлов? (если нет, то можно создать)
Если быстродействие уж очень критичное, то можно прикрутить мемкеш)




--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
Absinthe
Дата 15.6.2011, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Советую загружаемые фото раскладывать по разным каталогам(например на 256 на основе первых 2х символов хэша имени) т.к. наличие множества файлов в одном каталоге сильно замедляет работу всех популярных ФС.
PM MAIL   Вверх
Psytodelist
Дата 16.6.2011, 05:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 5.3.2010

Репутация: нет
Всего: нет



Цитата(s0lman @ 15.6.2011,  10:51)
Цитата(Psytodelist @  14.6.2011,  19:41 Найти цитируемый пост)
есть скрипт загрузки
фотографий

Операция не настолько быстрая, чтобы проверка file_exists() ее существенно замедлила (если не 30 тыс файлов в 1 папке лежит)

Второй момент. Если фотографии загружаются, то, подозреваю, имена файлов где-то в таблице сохраняются - что мешает сделать выборку из базы вместо просмотра списка файлов? (если нет, то можно создать)
Если быстродействие уж очень критичное, то можно прикрутить мемкеш)

Нет, как раз работу с БД я решил избежать при загрузке фотографий.
Загрузка идет через аякс, который возвращается массив названий загруженных фото
и вставляет их в захайденый инпут. Во время выполнения заказа идет
внесение этого массива и информации о заказчике в БД.
Фотографии - в одну таблицу с уникальным ИД, а информацию о заказе в другую
с соответствующей ссылкой в виде уникального идентификатора массива фотографий, которые
были загружены перед отсылкой данного заказа.
PM MAIL   Вверх
solenko
Дата 16.6.2011, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(Psytodelist @  16.6.2011,  04:52 Найти цитируемый пост)
Загрузка идет через аякс, который возвращается массив названий загруженных фото
и вставляет их в захайденый инпут. 

Т.е. клиент передумал, и мы получили подвисшие файлы, о которых нет никакой информации в системе. Как чистить -- хз... Не очень удахный вариант, как по мне


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Shogun
Дата 16.6.2011, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Цитата(Psytodelist @  16.6.2011,  05:52 Найти цитируемый пост)
Нет, как раз работу с БД я решил избежать при загрузке фотографий.
Загрузка идет через аякс, который возвращается массив названий загруженных фото
и вставляет их в захайденый инпут. Во время выполнения заказа идет
внесение этого массива и информации о заказчике в БД.
Фотографии - в одну таблицу с уникальным ИД, а информацию о заказе в другую
с соответствующей ссылкой в виде уникального идентификатора массива фотографий, которые
были загружены перед отсылкой данного заказа. 

Ну так в чем собственно проблема? Для чего Вам нужен file_exists??

Если фотография попала в этот массив я так понимаю она загружена и нет смысла в file_exists.

Цитата(Psytodelist @  14.6.2011,  19:41 Найти цитируемый пост)
пока (файла с таким именем в директории есть) делай {
если (есть такой файл) {переименуй этот файл на id md5(uniqid(rand(),1))}
}

Зачем Вам переименовать файлы уже после того как они загружены а не сразу?
Код

$uploaded_images = array();
$new_filename = md5(uniqid(rand(),1));
if (is_uploaded_file($image['tmp_name'], $up_dir.$new_filename))
  {
    $uploaded_images[] = $new_filename;
  }
echo json_encode($uploaded_images);



--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.