«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/08/16 08:00:41  №1454326 1
Возникла такая проблема - в админке сайта нужно сделать загрузку больших файлов (>100 мб).

Я с помощью js разбиваю файл на части по 5мб (chunks), а потом собираю их все вместе уже на сервере. У меня возникла проблема с авторизацией. Доступ к загрузчику файлов должен быть только у админа, поэтому перед загрузкой каждой части я проверяю куки пользователя и делаю запрос в бд перед отправкой файла, чтобы убедиться, что загрузку осуществляет админ.

Это нормальное решение в плане нагрузки на сервер? Меня очень смущает, что на каждую часть файла приходится sql запрос, можно как-то иначе решить этот вопрос? Как можно осуществить контроль к загрузчику без использования sql каждый раз? надеюсь понятно расписал
Ответы: >>1454365 >>1455475
Аноним 2019/08/16 08:55:42  №1454365 2
>>1454326
Возьми tus как готовое решение загрузки файлов по частям. Каждый блок там подписан хэшем. Так что кинешь проверку кук только на самый первый запрос загрузки дальше у тебя в очередь кусков уже никто не сможет влезть так что можно не проверять
Аноним 2019/08/18 02:10:55  №1455475 3
>>1454631

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

- структура объекта, какие у него есть поля, описаны в коде, к ним можно писать комментарии, а структура массива - нет
- в объекте могут быть методы
- в объекте можно использовать приватные поля и инкапсуляцию
- на объект можно поставить тайп-хинт с указанием класса, на массив - только хинт array без описания структуры

Таким образом, код будет удобнее читать.

>>1454326

Если запрос выбирает одну строку по ключу, то это не проблема. Сделай тест - скорее всего MySQL может делать тысячи таких запросов за секунду.

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

Не гадай насчет производительности, а делай замеры. Интуиция тут сильно подводит, часто на практике медленной оказывается та часть, которую ты считал быстрой.

>>1454210

Вот на всякий случай урок по строкам и utf-8: https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md

>>1453649

Да, такая проблема есть, но она не в менеджере пакетов. Например, ты можешь вручную скачать библиотеки версий 1.4 и 1.5, но ты не сможешь их подключить из-за одинаковых имен классов. В JS эта проблема решается тем, что там есть модули и нет требования к уникальности имен классов.

>>1453656

Сделать каталог public корневым (DocumentRoot). Это самый надежный способ.