[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Определение путей ко всем вложенным каталогам
Страницы: 1, 2
FatCat
Цитата (inpost @ 10.01.2017 - 14:16)
Если 1 раз в сутки он отработает 1 секунду

От структуры директорий зависит. Может и не 1 секунду.
Например, файловый кеш архивированных сообщений нашего форума (в локальной копии):

user posted image

Скрипт на локалке работает порядка 40 секунд.
А даже если всего десяток директорий, но в каждой многие тысячи файлов - тоже весьма долго будет работать...

Как бы считать только директории, не считая файлы.
scandir считывает все файлы в директории, а значит, чем больше файлов, тем больше потери времени на сбор не нужной нам информации.

_____________
Бесплатному сыру в дырки не заглядывают...
kaww
Цитата (exotica @ 10.01.2017 - 15:44)
возникло непреодолимое желание написать автозагрузчик

Цитата (exotica @ 10.01.2017 - 15:44)
лень писать пути к файлам
exotica
Цитата
Скрипт на локалке работает порядка 40 секунд.


Скан от корня диска произошел за 54 секунды, и выгрузил массив из 37858 адрессов к найденым директориям. (ну думаю не стоит говорить что выполнение запроса было прервано)
Полагаю что выгрузка кэша форума не будет 40 сек идти, но кто знает

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
inpost
exotica
Какой ужас. А что, мои классы не должны иметь конфига, или ты собираешься на одной странице всё В КУЧЕ ПОДКЛЮЧАТЬ? То есть для более-менее небольшого сайта у тебя будет порядка 50-100 инклюдов? brevis прав, мы огорчены.

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

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
walerus
exotica
А чего мой "говнокод" не протестировал ?... :huh:

По сути получается вместо прямых путей к инклюдам, скрипт-"автозагрузчик", будет каждое обновление( CTRL+F5 / R ) страницы, сканировать весь сервак, для получения списка директорий, потом проверять существование файла в данной директории и после этого его подключать, по моему как то ресурсоемко и туча ненужных манипуляций :huh:

Не лучше ли использовать автозагрузку нужных классов, в том месте где они нужны, например:
# Автоподгрузка классов
function __autoload($name){ include("classes/_class.".$name.".php");}

# Класс конфига
$config = new config;

# Функции
$func = new func;
FatCat
Цитата (exotica @ 10.01.2017 - 16:03)
Скан от корня диска произошел за 54 секунды, и выгрузил

От быстродействия компьютера зависит, и от того, разрешено ли индексирование для быстрого поиска. У меня довольно старенький ноутбук, индексирование отключено.
Просто под виндовс правой кнопкой по директории и "свойства" - примерно те же секунд 40 считает файлы и папки.

_____________
Бесплатному сыру в дырки не заглядывают...
exotica
Цитата
brevis прав, мы огорчены.

ой да бросьте вы. факт есть факт , нельзя написать идеальный код с первого раза, да и неизвестно существует ли идеальный код вообще. Так как всегда все перепиливается походу дела, а то и вовсе переписывается с нуля smile.gif

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

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.