Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 18

Подсчет файлов в каталоге, время

12.04.2013, 23:28. Показов 2939. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть скажем 100 папок, в которых 10 000 файлов.
Среди 100 папок есть одна папка с 9 999 файлов. Нужно найти ее.
Проверяю количество файлов :
Code
1
count(scandir($dir))
Вопрос. Есть ли другой метод подсчета фалов, более быстрый? Скок повремени выйдет, чтоб подсчитать количество файлов во всех папках.

Считает php или система уже выдает данное количество? То есть у системы уже заложено, подсчет количества файлов в каждой папке.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.04.2013, 23:28
Ответы с готовыми решениями:

Показать время изменения файла в каталоге файлов
Здравствуйте, я пытаюсь показать время изменения файлов в указанном каталоге, но у меня отображается только 1970 год, как я понял, php ищет...

Скрипты Linux, удаление файлов из каталога, подсчет файлов в каталоге
С linux столкнулась не по своей воле, но приходиться изучать, я совсершенно еще зеленая в Линуксе, если есть проффесионалы, могли бы...

Подсчёт файлов в каталоге
Здравствуйте ,я тут новичок и не знаю может тема вроде этой уже была , но дело то вот в чём: Есь вот этот код ( set num=0 for...

18
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
13.04.2013, 02:13
Есть ли другой метод подсчета фалов, более быстрый?
функцию scandir просто эмулирует такой кусок кода
PHP
1
2
3
4
$dh  = opendir();
while (false !== ($filename = readdir($dh))) {
    $files[] = $filename;
}
так что по скорости они могут быть одинаковы
Скок повремени выйдет, чтоб подсчитать количество файлов во всех папках
это зависит загруженности сервера и сложности файловой системы
Считает php или система уже выдает данное количество?
нет, считает php. он обращается к винчестеру и считывает список содержащихся файлов в выбраном каталоге. при этом получение имени файла это всегда считывание физической информации с привода. если файлов миллион то в зависимости от фррагментированности информации на носителе произойдет до одного милиона считываний с жесткого диска
есть разные типы файловых систем. в некоторых возможно и есть числовое значение количества файлов привязанное к каждому из каталогов
1
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 18
13.04.2013, 08:13  [ТС]
А не подскажите или я путаю. Что за ssd или hhd. В которых есть привязанность числа, скок вложено файлов.
0
Сексуальный
 Аватар для mialpet
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
13.04.2013, 09:52
Цитата Сообщение от tolimadokara Посмотреть сообщение
нет, считает php. он обращается к винчестеру и считывает список содержащихся файлов в выбраном каталоге
Ого! Насколько PHP крут оказывается, буду знать! Только вы в этом точно уверены? Может все-таки он к ОС обращается или вообще к веб-серваку, а тот пусть как хочет так и делает?
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
13.04.2013, 10:51
А не подскажите или я путаю. Что за ssd или hhd. В которых есть привязанность числа, скок вложено файло
ssd это вроде как флеш накопитель, а hhd жесткий диск. вряд ли есть такие ФС в которых каталогу соответствует число содержащихся в нем файлов, может в раритетных или малоизвестных ФС. Список файловых систем. Если ввести такую возможность то логично предположить что ФС увеличится в размере и станет медленее менять свою структуру (при добавлении файлов или каталогов) так что вряд ли такой тип ФС был когда либо создан.
Если вам нужно просто пропарсить каталоги на количество файлов один раз - тогда прийдется обычным методом, через scandir или readdir. Если подсчет файлов выполняется постоянно, к примеру это связанно с каким то из ваших веб проектов, тогда, к примеру, в БД можно создать образ файловой системы и уже в нем задавать соответствие количества файлов каждому из каталогов. тогда получение количества файл. в кат. будет мгновенным, занимать доли секунды одного запроса в БД
Только вы в этом точно уверены? Может все-таки он к ОС обращается
как обращается php к файловой системе можно узнать или с исходников соответствующих библиотек или используя отладчик. возможно обращается к стандартным функциям вывода/ввода операционной системы, но в любом случае чтение файловой системы типа FAT занимает много времени
0
Сексуальный
 Аватар для mialpet
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
13.04.2013, 11:01
Цитата Сообщение от tolimadokara Посмотреть сообщение
как обращается php к файловой системе можно узнать или с исходников соответствующих библиотек или используя отладчик.
Спасибо конечно за совет, но до этого вы уверенно дали ответ, потому я и переспросил, так как возможности PHP по вашим словам намного круче чем мне казалось до этого.
И все-таки я думаю что он обращается к веб-серверу, а тот уже к ОС, но это догадки конечно только (основанные на размышлении над работой PHP).
0
13.04.2013, 11:24
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
13.04.2013, 11:46
возможности PHP по вашим словам намного круче чем мне казалось до этого
я не точно выразил мысль, это не так важно
И все-таки я думаю что он обращается к веб-серверу, а тот уже к ОС
как правило веб сервер это собирательное понятие, в веб сервере есть http сервер, интерпретатор серверных скриптов (php, perl или просто бинарники на Си) и опционально сервер БД. между клиентом (веб браузером) и php располагается http сервер (напр. Apache server), так что все правильно
---
KOPOJI, что то вы не очень по теме запостили. при чем include_path и include к
Цитата Сообщение от Predator199 Посмотреть сообщение
Есть ли другой метод подсчета фалов, более быстрый?
?
0
13.04.2013, 11:49

Не по теме:

tolimadokara, это и было не по теме - тег OFF стоит.. Это было относительно того, откуда и как "берется" файл

0
13.04.2013, 11:51

Не по теме:

Действительно, от я тормоз, да :D

0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
13.04.2013, 12:01
Цитата Сообщение от Predator199 Посмотреть сообщение
Вопрос. Есть ли другой метод подсчета фалов, более быстрый?
попробуйте glob, возможно будет быстрее
PHP
1
$count = count(glob($dir . '*.*')) - 2;
0
19 / 19 / 1
Регистрация: 05.04.2013
Сообщений: 88
13.04.2013, 14:21
Если вам часто нужно подсчитывать файлы в какой-то папке и эти файлы вы создаёте или удаляете посредством PHP, создайте в каждой папке текстовый файл с числом (количество файлов) и когда создаёте новый файл, то добавляйте к этому числу 1, а когда удаляете файл вычитайте 1.
Тогда, чтобы проверить сколько файлов в этой папке, то вам нужно будет прочитать только этот файл.
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
13.04.2013, 15:11
создайте в каждой папке текстовый файл с числом (количество файлов) и когда создаёте новый файл, то добавляйте к этому числу 1, а когда удаляете файл вычитайте 1
хорошая идея, и видимо самая лучшая. но прийдется не просто так увеличивать или декрементировать счетчик файлов, но делать рекурсию с нижнего уровня вложенности файла в каталог к верхней иерархии ФС, и везде в текстовых файлах изменить значение коунтера
0
Сексуальный
 Аватар для mialpet
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
13.04.2013, 16:12
Цитата Сообщение от tolimadokara Посмотреть сообщение
как правило веб сервер это собирательное понятие, в веб сервере есть http сервер, интерпретатор серверных скриптов (php, perl или просто бинарники на Си) и опционально сервер БД. между клиентом (веб браузером) и php располагается http сервер (напр. Apache server), так что все правильно
Эммммм, для меня веб-сервер это веб-сервер, кроме него есть сервер БД да вообще куча разных и никогда он не был собирательным понятием.
Про "http сервер" слышу впервые, тем более оказалось новостью что Апаче это "http сервер", неужели он с протоколом https не работает???
Я ведь просто указал на ошибку которую будут видеть множество людей, зачем вы дописываете другие вдобавок к ней?

Не по теме:

Цитата Сообщение от KOPOJI Посмотреть сообщение
Это было относительно того, откуда и как "берется" файл
Может скажите в двух словах, а то я инфы по вашим ссылкам на эту тему не нашел.



Добавлено через 51 секунду
Цитата Сообщение от tolimadokara Посмотреть сообщение
хорошая идея, и видимо самая лучшая. но прийдется не просто так увеличивать или декрементировать счетчик файлов, но делать рекурсию с нижнего уровня вложенности файла в каталог к верхней иерархии ФС, и везде в текстовых файлах изменить значение коунтера
Можно иметь один файл с счетчиком для всех директорий.
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
13.04.2013, 17:21

Не по теме:

Эммммм, для меня веб-сервер это веб-сервер, кроме него есть сервер БД да вообще куча разных и никогда он не был собирательным понятием
веб от англ. web (паутина). а сервер, вроде как от англ. service (обслуживать), измененное в server (обслуживатель). да, вообще общепринято говорить веб сервер на http сервер, потому что данные с которыми он работает это хтмл, язык веб страниц того что асоциируется с вебом, паутиной. короче я не знаю %-), возможно я ошибаюсь. но я часто слышал как веб сервером люди называют весь сетевой вычислительный комплекс, напр. "Мы перенастроили наш веб сервер"
Про "http сервер" слышу впервые
я называю апач http сервером и люди понимают о чем я :pardon: но не буду настаивать
тем более оказалось новостью что Апаче это "http сервер", неужели он с протоколом https не работает?
например я сказал "Двухколёсный велосипед" но это не говорит о том есть ли на велосипеде багажник или нет. префикс s это опциональный наворот веб сервера, позволяющий компам общатся по зашифрованному протоколу. в некоторых веб серверах может отсутствовать такая возможность, имхо
Я ведь просто указал на ошибку которую будут видеть множество людей, зачем вы дописываете другие вдобавок к ней
ну поправьте меня, может занесло не туда


Можно иметь один файл с счетчиком для всех директорий
если есть десять каталогов и в каждом определенная куча файлов то можно по одному файлику в каталоге разместить. но если структура дерева каталогов произвольная и многоуровневая - прийдется обновлять цепочку данных в ветви дерева каталогов, от каталога в который добавлен/удален файл и вверх по ветке дерева каталогов к корню
0
Сексуальный
 Аватар для mialpet
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
13.04.2013, 17:44

Не по теме:

Цитата Сообщение от tolimadokara Посмотреть сообщение
ну поправьте меня, может занесло не туда
Дык я и поправлял, а вы про веб-сервер начали рассказывать :)


Цитата Сообщение от mialpet Посмотреть сообщение
Можно иметь один файл с счетчиком для всех директорий.
Я забыл про задачу ТС когда предложил это, тут это не подходит, хотя можно, но проще тогда уже в каждом каталоге иметь файл в котором будет указанно только количество файлов в этом каталоге или каждая строка в одном файле будет казывать только количество файлов в каталоге, а уже посредством php выяснять есть-ли еще каталоги в этом каталоге и скадывать значения из разных файлов счетсчиков или строк в одном файле.
Но в задаче указано что подкаталогов нет.
А вообще тут не файл нужен, а запись в БД.
И неизвестно работает-ли ТС постоянно с одной файловой системой или это разовая процедура на разных серваках.
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
13.04.2013, 17:52
Но в задаче указано что подкаталогов нет
да. но точно не известно
А вообще тут не файл нужен, а запись в БД
нет, можно одним файлом это реализовать. сервера БД оптимизированны для быстрой выборки значений с огромного набора данных, это сдесь лишнее потому как будет там записей 20 максимум
И неизвестно работает-ли ТС постоянно с одной файловой системой или это разовая процедура на разных серваках
мне кажется что разовая процедура просто очень много файлов
0
Сексуальный
 Аватар для mialpet
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
13.04.2013, 18:01
Цитата Сообщение от tolimadokara Посмотреть сообщение
нет, можно одним файлом это реализовать. сервера БД оптимизированны для быстрой выборки значений с огромного набора данных, это сдесь лишнее потому как будет там записей 20 максимум
Тем не менее это не мешает ее использовать вместо более медленного чтения из файла.
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
13.04.2013, 18:04
Цитата Сообщение от mialpet Посмотреть сообщение
это не мешает ее использовать вместо более медленного чтения из файла
это уже не существенно, записями в БД или файлами
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.04.2013, 18:04
Помогаю со студенческими работами здесь

Подсчет количества файлов в каталоге
Помогите пожалуйста! Можно ли сделать в PowerShell КФ для подсчет количества выполняемых файлов (exe,cmd,bat) в каталоге, заданном первым...

Подсчет количества выполняемых файлов (exe, cmd, bat) в каталоге
Помогите пожалуйста выполнить задание! Необходимо создать командный файл, выполняющий подсчет количества выполняемых файлов (exe,cmd,bat)...

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

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

Скрипт на проверку наличия файлов в каталоге и удаления файлов
Доброго времени суток! Накидал не большой скрипт для очистки папки. По задумке он должен проверить есть ли файлы в папке, если есть то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru