![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| BobiKK |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 655 Регистрация: 1.12.2005 Где: Essen, Deutschlan d Репутация: 4 Всего: 16 |
В общем, попросили написать скриптик галереи. Причем, поскольку сервер собственный, и папка "www" шарится через самбу, то модерировать галлерею (добавлять фотки, добавлять категории, удалять и всё-такое) лучше не через веб-интрфейс, а так, напрямую.
Когда юзверь добавит новый каталог/каталоги с фотографиями, он запустит скрипт. В скрипте есть следующие строки:
Т.е., формируется массив из всех каталогов, запись о которых имеется в БД. Далее, читаем сами каталоги:
Недостаток на лицо: array_search() перебирает всегда с первого по последний элемент массива, т.е. при добавлении новых галерей скорость выполнения скрипта уменьшается практически в геометрической прогрессии. |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
Я мало знаю конструкции php-языка, но наверняка как-то возможно уменьшить длину массива, чтоб в следующий поиск искать уже от позиции последнего найденного элемента.
Добавлено @ 21:36 array_slice - возвращает часть массива, задаваемая смещением начального элемента "среза" и длиной "среза" |
|||
|
||||
| ASteel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 24.5.2006 Где: Krasnodar, Russia Репутация: 1 Всего: 1 |
Предлагаю не искать по массиву, а искать непосредственно в БД.
А точнее - сравнить, что будет быстрее при n=30 хотя бы. Т.е. в БД объявить path - ключом, и делать
|
|||
|
||||
| BobiKK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 655 Регистрация: 1.12.2005 Где: Essen, Deutschlan d Репутация: 4 Всего: 16 |
Хм... Это же получается 30 запрос в БД, если я правильно понял мысль.
|
|||
|
||||
| ASteel |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 24.5.2006 Где: Krasnodar, Russia Репутация: 1 Всего: 1 |
Абсолютно правильно.
Поэтому я и предлагаю, сравнить по времени, что будет быстрее. Кстати, вы не могли бы пояснить, что в итоге надо сделать. Если я правильно понял, то надо находить каталоги, которые отсутствуют в БД, и добавлять их. Так? Кстати, пришла в голову еще 1 идея.
И далее:
Кстати, если мне не изменяет память, то лучше в if-е выполнять то, что делается чаще всего, а в else-e то, что реже ;) |
||||
|
|||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
Ты думаешь что такая кострукция будет выполняться быстрее, чем in_array? Не уверен....
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| ASteel |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 24.5.2006 Где: Krasnodar, Russia Репутация: 1 Всего: 1 |
Был использован вот такой скрипт:
Результаты:
Сам такого не ожидал. Если кто скажет, где я дурак, буду благодарен! |
||||
|
|||||
| BobiKK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 655 Регистрация: 1.12.2005 Где: Essen, Deutschlan d Репутация: 4 Всего: 16 |
По-моему, дейсвительно здорово
11732.62 mseconds Associative: 0.58 mseconds |
|||
|
||||
| BobiKK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 655 Регистрация: 1.12.2005 Где: Essen, Deutschlan d Репутация: 4 Всего: 16 |
Дык ведь, логично. in_array($value, $array) с каждым элементом массива $array делает что-то типа: if ($array[element] == $value); А здесь эта конструкция выполняется всего лишь один раз. |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
Увы... признаю, был не прав
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |