- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
<?php $dir=$_SERVER['DOCUMENT_ROOT']; $_GET['f'] = isset($_GET['f']) ? trim(preg_replace("/[^0-9A-Za-z\.\-\_]/","",$_GET['f'])) : die('404'); $file=$dir.'/papka/videos/'.urldecode($_GET['f']); download($file); function download($file){ if (file_exists($file)) { if (ob_get_level()) { ob_end_clean(); } $extension = pathinfo($file, PATHINFO_EXTENSION); $new_name = uniqid().'.'.$extension; header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' .$new_name); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); readfile($file); exit; } else{ echo 'Can\'t find the file: '.$file; } } ?>
Но есть проблема, некоторые юзеры жалуются что у них не получается скачать (или докачать) файлы. Вероятно идет обрыв из-за плохого интернет соединения. Как бы так настроить nginx, чтобы он учитывал такие нюансы?
скачиваются юзерами незатейливым скриптом
А у файлов какие-то специфические расширения что ли? Зачем эти пляски с чтением файла php-скриптом?
Вероятно идет обрыв из-за плохого интернет соединения.
Время работы php-скрипта ограничено?
А у файлов какие-то специфические расширения что ли? Зачем эти пляски с чтением файла php-скриптом?
Время работы php-скрипта ограничено?
max_execution_time 300
Если вы не хотите светить реальные адреса, то лучше делайте копию файла с каким-нибудь левым названием и потом удаляйте его через время.
ИЛИ
Создавать ярлыки системные на эти файлы и через них делать скачивание.
Сейчас же каждый файл проходит перегонку в память через PHP. Для раздачи больших файлов это просто не подходит т.к. память может закончится при большом количестве скачиваний. Или PHP просто умрёт т.к. люди могут и час качать, тут 300 секунд маловато будет.
Ещё можно сделать просто тупо редирект на скачивания файла, некая мини-защита, чтобы не тянули сразу прямые ссылки.
Функции очистки старых файлов ещё нет.
$tempFileName = uniqid() . '.' . $originalExtension;
Спорный момент, я бы лучше md5 делал из названия файла, чтобы в случаи одинаковых файлов, не плодились дубли.
Функции очистки старых файлов ещё нет.
Спорный момент, я бы лучше md5 делал из названия файла, чтобы в случаи одинаковых файлов, не плодились дубли.
Есть) Просто я не стал ее указывать, машина предложила такое -
Ну и крон чтобы выполнять это все -
0 * * * * php /путь/к/delete_temp_files.php
По поводу копий, да это так. Учитывая что они будут удаляться каждый час, это нормально. Да, и если допусстим скрипт не будет создавать файл потомучто он как бы уже есть (создан ранее) и оставит как есть, то есть вероятность что пользователь не успеет докачать файл и он удалится по крону.
По поводу копий, да это так. Учитывая что они будут удаляться каждый час, это нормально. Да, и если допусстим скрипт не будет создавать файл потомучто он как бы уже есть (создан ранее) и оставит как есть, то есть вероятность что пользователь не успеет докачать файл и он удалится по крону.Минимизация обращений к диску и операций ввода вывода.
Чтобы файлы не удалялись, которые сейчас скачиваются т.е. актуальные есть функция touch https://www.php.net/manual/en/function.touch.php
$files = glob($tempDir . '*');
Рекомендую:
$files = glob($tempDir . '*' | GLOB_NOSORT );
Тоже ускорит вывод. Хотя от этой переменной вообще можно избавиться, а сразу в foreach её.
Тоже бессмысленная переменная.
Вообще конечно код прикольный, но он больше какой-то учебный что-ли.
в общем такое предложил он, чтобы не плодить копии -
Ну, и скрипт для удаления -