А можно свои 5 копеек? Без GPT и его говно кода. Особенно прикольно, что если недостаточно строк, то мы будем выводить по порядку, просто текст. Чего?!
<?php function cikl($file,$cnt=5){ if (file_exists($file)) { $data = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); if ($data && $cnt) { $i=0; shuffle($data); $data_count=count($data); if ($cnt>$data_count) { $cnt=$data_count; } while($i!=$cnt) { echo do_shortcode ( $data[$i]); $i++; } } } } cikl('diff1.txt',10);
Кстати, чтобы файлы туда сюда не перемещать, PHP всё же умеет в символические ссылки: https://www.php.net/manual/ru/function.symlink.php
Поэтому без проблем можно не файлы копировать, а просто ссылки на них создавать.
На что фантазии хватит
в файловую систему вообще не лезем, и через php файлы не отдаём
Да, тут вообще у нас любые фантазии приветствуются. Я предложил пример в лоб, который вполне понятен, и его реализация проста и прозрачна.
На nginx можно реализовать одноразовые ключи, вот статья: https://habr.com/ru/articles/346758/
Хотите постоянную ссылку - пожалуйста
/down.php?id=1
А скрипт уже через заголовок редиректит на /data/files.zip к примеру
По прямому адресу /data/files.zip - доступа не будет, только через down.php
Ссылка должна привязана быть к пользователю. Это защита, чтобы не делились ссылками.
Через час ссылка умирает и пока физически человек её не запросит, файл не будет доступен.
Поправьте меня конечно:
Реальный адрес файла закрываем опцией internal, и по прямой ссылке будет ошибка 404
И какой смысл? Суть то в том, чтобы файлы вообще были доступны временно для всех. Мы тут не меняем одно название файла на другое.
Минимизация обращений к диску и операций ввода вывода.
Чтобы файлы не удалялись, которые сейчас скачиваются т.е. актуальные есть функция 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 делал из названия файла, чтобы в случаи одинаковых файлов, не плодились дубли.
Лёня, не спорь. Все можно. Спросите зачем? Просто у меня логика работы и его реализация упростится. нашел решение на одном англ сайте
также есть ответ тут
https://qna.habr.com/q/966677
https://qna.habr.com/q/885545
До чего прогресс дошёл, но решение то там не просто выбор файла.
Это мы создаём сначала считывание локального файла со своего сайта, потом создаём виртуальный файл и уже его подставляем как безопасный в загрузку для файлов.
У меня фастпанель PHP-FPM для етого сайта
Эти параметры в карточке товара проверьте:
Так же вижу у вас WP как я понял. Никаких случаем конверторов в webp не стоит, которые в реальном времени должны их обрабатывать?
Лёня, картинка на моем сайте. и браузер ошибок не выдает
Да хоть на Луне. Нельзя в поле ничего подставить.
Если всё на своём сервере, тогда надо форму обрабатывать через PHP и сразу POST запрос в неё делать, зачем использовать HTML интерфейс, который для людей создан?