LEOnidUKG

LEOnidUKG
Рейтинг
1776
Регистрация
25.11.2006
Должность
PHP
Интересы
Программирование
Mobiaaa #:

На что фантазии хватит

в файловую систему вообще не лезем, и через php файлы не отдаём

Да, тут вообще у нас любые фантазии приветствуются. Я предложил пример в лоб, который вполне понятен, и его реализация проста и прозрачна.

На nginx можно реализовать одноразовые ключи, вот статья: https://habr.com/ru/articles/346758/

Mobiaaa #:

Хотите постоянную ссылку - пожалуйста

/down.php?id=1

А скрипт уже через заголовок редиректит на /data/files.zip к примеру

По прямому адресу  /data/files.zip - доступа не будет, только через down.php

Ссылка должна привязана быть к пользователю. Это защита, чтобы не делились ссылками.

Через час ссылка умирает и пока физически человек её не запросит, файл не будет доступен.

Поправьте меня конечно:

Реальный адрес файла закрываем опцией internal, и по прямой ссылке будет ошибка 404

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

iccup #:


По поводу копий, да это так. Учитывая что они будут удаляться каждый час, это нормально. Да, и если допусстим скрипт не будет создавать файл потомучто он как бы уже есть (создан ранее) и оставит как есть, то есть вероятность что пользователь не успеет докачать файл и он удалится по крону.

Минимизация обращений к диску и операций ввода вывода.

Чтобы файлы не удалялись, которые сейчас скачиваются т.е. актуальные есть функция touch https://www.php.net/manual/en/function.touch.php


$files = glob($tempDir . '*');

Рекомендую:

$files = glob($tempDir . '*' | GLOB_NOSORT  );

Тоже ускорит вывод. Хотя от этой переменной вообще можно избавиться, а сразу в foreach её.

$fileCreationTime = filectime($file);

Тоже бессмысленная переменная.


Вообще конечно код прикольный, но он больше какой-то учебный что-ли.

Функции очистки старых файлов ещё нет.

$tempFileName = uniqid() . '.' . $originalExtension;

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

lutskboy #:

Лёня, не спорь. Все можно. Спросите зачем? Просто у меня логика работы и его реализация упростится. нашел решение на одном англ сайте

также есть ответ тут

https://qna.habr.com/q/966677

https://qna.habr.com/q/885545

До чего прогресс дошёл, но решение то там не просто выбор файла.

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

lutskboy #:

У меня фастпанель  PHP-FPM для етого сайта

Эти параметры в карточке товара проверьте:

Так же вижу у вас WP как я понял. Никаких случаем конверторов в webp не стоит, которые в реальном времени должны их обрабатывать?

lutskboy #:

Лёня, картинка на моем сайте. и браузер ошибок не выдает

Да хоть на Луне. Нельзя в поле ничего подставить.

Если всё на своём сервере, тогда надо форму обрабатывать через PHP и сразу POST запрос в неё делать, зачем использовать HTML интерфейс, который для людей создан?

Запрещено по безопасности такое делать на уровне браузера. Иначе бы сайты тырили системные файлы как это было раньше в IE.
lutskboy #:

vps ubuntu 20.04 2 core 4gb 

Панель управления какая? Какая связка сайта Apache + nginx?

Всего: 31521