у нас есть веб-приложение, написанное на PHP, и мы хотим, чтобы все наши пользователи могли загружать изображения, например, 50 МБ.
Мы создадим структуру каталогов, чтобы у каждого пользователя была своя собственная папка, например app / user1 / images app / user2 / images ...
Теперь каждый раз, когда пользователь загружает изображение, нам нужно проверять, разрешено ли это по-прежнему, но мы не хотим, чтобы 1000 пользователей непрерывно сканировали наш жесткий диск, подсчитывая размеры файлов в своем каталоге. Так что писать скрипт, который считает все размеры файлов в пользовательском каталоге, не вариант, я полагаю?
Есть ли более простой способ рассчитать используемое пространство на пользователя и соответствующим образом ограничить наше приложение?
Сохраните размер загружаемых файлов в таблице базы данных, рассчитайте сумму (размеры изображений) для конкретного пользователя и сравните ее с их лимитом при загрузке.
Еще лучше, чтобы избежать этой операции суммирования, вы можете добавить значение размера загрузки в столбец (TotalUploadsSize) в пользовательской таблице и сравнить его с максимумом, разрешенным для каждой загрузки.
Вы могли бы что-нибудь сделать с дисковыми квотами в файловой системе.
См. Соответствующий вопрос о квотах на каталог. Если у вас есть или вы можете использовать XFS, вы можете установить квоты проекта.