[PHP] Чтение списка файлов на диске

DavyJohnes
На сайте с 05.01.2011
Offline
84
1008

Имеется:

- linux+apache+mysql+php

- php скрипт, который читает содержимое каталога /some/dir, который в свою очередь содержит N файлов и вложенных директорий и выводит список найденного.

- имеется таблица в бд, в которой имеется полный список файлов и каталогов содержащихся в /some/dir

Так вот собственно вопрос: что будет экономичнее с точки зрения ресурсов ПК, считывать содержимое каталога средствами php или же извлекать эту информацию из БД ?

P.S.: фс ext4 если это имеет значение. Если имеет - объясните почему?

https://handy-tools.io (https://handy-tools.io) - Набор полезных утилит для всех!
zexis
На сайте с 09.08.2005
Offline
388
#1

Оба варианта могут работать достаточно быстро.

Думаю, что разница в скорости будет не очень большой.

Выбирать нужно в зависимости от архитектуры задачи.

В mysql для ускорения выборки можно создать индексы.

В случаи с файлами можно организовать их в виде многоуровневого дерева в папках.

Если скорость для вас критична, реализуйте оба варианта и сравните их скорость с помощью ab.

DavyJohnes
На сайте с 05.01.2011
Offline
84
#2
zexis:
Оба варианта могут работать достаточно быстро.
Думаю, что разница в скорости будет не очень большой.
Выбирать нужно в зависимости от архитектуры задачи.
В mysql для ускорения выборки можно создать индексы.
В случаи с файлами можно организовать их в виде многоуровневого дерева в папках.

Если скорость для вас критична, реализуйте оба варианта и сравните их скорость с помощью ab.

Ну если даже представить ситуацию в обоих случаях.

При первом запросе и в том и в другом случае задействованна ФС, в первом случае данные читаются с диска напрямую, во втором случае данные читаются из БД, которая в свою очередь тоже на диске. При втором запросе, в первом случае данные читаются с диска напрямую, во втором случае данные будут читаться уже из кэша который в свою очередь находится уже в памяти а не на диске. Получается выигрыш в скорости, не?

zexis
На сайте с 09.08.2005
Offline
388
#3

Да, скорее всего в mysql чтение строк таблицы происходит быстрее чем списка файлов с диска.

prihhost
На сайте с 06.05.2010
Offline
29
#4

правильно, тут нужно выбирать от ситуации, если к примеру ваш диск постоянно загружен - то проще из базу брать т.к. там кеширование можно сделать и т.д., а если у вас нагруженна БД - то возможно проще будет прочесть из FS.

и проще всего попробовать оба варианта.

---------- Добавлено 21.01.2013 в 13:09 ----------

zexis:
Да, скорее всего в mysql чтение строк таблицы происходит быстрее чем списка файлов с диска.

а если всё дерево категорий будет в кеше ? тут не факт...

---------- Добавлено 21.01.2013 в 13:13 ----------

еще есть такое решение... можно отслеживать всё и брать только изменения...

http://habrahabr.kz/blog/752.html

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий