Intereting Posts
Массив объектов возвращает одинаковые значения Кодировка Joomla UTF-8 не открывается при открытии почты выполнять несколько запросов сразу в laravel Как я могу получить все перестановки в PHP без последовательных дубликатов? Как зашифровать данные $ _GET в php? PHP добавляет элементы в многомерный массив с помощью массива array_push Использование Apostrophe в значении MySQL ENUM, которое будет заполнять поле со списком HTML для поиска в базе данных PHP Json_encode меняет пробелы на плюс символы + Шифровать с помощью PHP Mcrypt и расшифровывать с помощью MySQL aes_decrypt? Чтение данных календаря Apple / iCloud с использованием PHP / CalDAV Как отправить письмо с помощью Gmail через почту ()? Где я могу ввести пароль? Игнорировать ошибку загрузки изображения Создайте выпадающий список в Zend Framework 2 default mailto в письмах по электронной почте в формате PDF Измените значение второго выбора при первом выборе

как организовать файлы, созданные динамически с помощью php?

У меня есть сайт PHP, который создает и хранит файлы шаблонов HTML на сервере на основе пользовательского ввода. Один пользователь может создавать множество шаблонов. Так, чтобы хранить файлы шаблонов и связывать их с записью БД, то, что я делаю,

«шаблоны» – это таблица, в которой содержатся другие сведения о шаблоне, например, кто их создал и т. д. с уникальным идентификатором auto-increment id как template_id

например, если идентификатор шаблона равен 1001, я конвертирую его в шестнадцатеричный, который является 03e9. Теперь я разделяю шестнадцатеричное число на 03 и e9 (после двух чисел) становится папкой, а e9 становится файлом с некоторым расширением как «e9.tpl»,

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

это хороший подход? любые недостатки такого подхода? есть ли другой подход лучше этого?

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

Вы делаете это, потому что вы обеспокоены тем, что в каталоге могут отсутствовать записи файла / inodes? В ext3 практический предел составляет около 100 000 файлов (и 32 000 dirs).

Создание структуры каталогов «на лету» лучше выполняется с использованием modulu, как в $dir = $id % 1000 а затем помещает новый шаблон в этот $dir/$id.tpl ( $dir/$id.tpl ). Эта стратегия создаст максимум 1000 копий, и вы позволили бы обрабатывать около 100.000.000 файлов.

Я не вижу причин для возиться с шестнадцатеричными значениями или подстроками.

Если идентификатор в таблице DB уже UNIQUE, зачем вообще преобразовывать идентификатор для файловой системы? Просто добавьте файл 1001.tpl, и вы все настроены. Если вы хотите, чтобы файлы шаблонов отсортировались по папкам, используйте идентификатор пользователя (который, как я полагаю, тоже UNIQUE), вы получите папку 124 / 1001.tpl.

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

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

Когда вы нажмете 65536, вы получите 0x10000. Убедитесь, что ваш код может справиться с этим. Я был бы более склонным хранить 0x1234 как: 1 / 1234.tpl, просто для ясности. Обратите внимание, что в силу последовательных идентификаторов ваши папки будут заполняться последовательно.

Я бы, вероятно, даже не конвертировал их в шестнадцатеричный. Вы можете использовать оператор модуля, чтобы определить, в какую папку их помещать. Объясните, сколько файлов вы, вероятно, используете, и используйте это, чтобы определить, сколько папок вам нужно.

Например:

 $path = ($id % NUMBER_OF_FOLDERS) . "/$id.tpl" 

где $id – идентификатор шаблона в десятичном формате.

Я не понимаю смысла разделять гексагон на две части для создания разных папок … Это может создать сотни и сотни разных папок, которые станут полным беспорядком на вашем сервере. Почему бы просто не хранить на шаблонах в одной папке с шестнадцатеричным значением в качестве имени файла, например, 03e9.tpl ?