В общем долго я бодался с ним, не все и не сразу получалось. Однако, он понимает меня куда быстрее чем остальные прогеры. В итоге, я получил рабочий вариант -
<?php $allowedReferer = 'https://domain.com/'; // Замените на адрес вашего сайта $referer = $_SERVER['HTTP_REFERER'] ?? '';
if (strpos($referer, $allowedReferer) !== 0) { // Если реферер не ваш сайт, выводим ошибку и прекращаем выполнение скрипта header('HTTP/1.0 403 Forbidden'); exit('Direct access not allowed.'); }
// Путь к директории для сохранения временных файлов (относительный путь) $tempDir = 'videostmp/';
// Путь к оригинальному файлу (относительный путь) $originalFilePath = 'videos/' . $_GET['file'];
// Абсолютный путь к директории временных файлов $tempDirAbsPath = __DIR__ . '/' . $tempDir;
// Создание директории для временных файлов, если она не существует if (!is_dir($tempDirAbsPath)) { mkdir($tempDirAbsPath, 0755, true); }
// Получение расширения оригинального файла $originalExtension = pathinfo($originalFilePath, PATHINFO_EXTENSION);
// Генерация уникального имени файла с расширением, используя хэш оригинального файла $tempFileName = $originalFileHash . '.' . $originalExtension; $tempFilePath = $tempDirAbsPath . $tempFileName;
// Проверяем наличие временного файла if (!file_exists($tempFilePath)) { // Копируем оригинальный файл во временную директорию if (copy($originalFilePath, $tempFilePath)) { // Установка прав доступа для временного файла chmod($tempFilePath, 0644); } else { // Обработка ошибки создания временного файла echo 'Error creating temporary file.'; exit; } }
// Обновляем время последнего доступа к файлу touch($tempFilePath);
<?php $tempDir = 'videostmp/'; $tempDirAbsPath = __DIR__ . '/' . $tempDir; $maxLifetime = 3600; // Время жизни файла в секундах (в данном примере - 1 час)
// Получаем список файлов в директории $files = glob($tempDirAbsPath . '*');
// Проходимся по каждому файлу и проверяем время последнего доступа foreach ($files as $file) { // Получаем время последнего доступа к файлу $lastAccessTime = fileatime($file);
// Вычисляем время, прошедшее с последнего доступа к файлу $elapsedTime = time() - $lastAccessTime;
// Если прошло больше времени, чем заданное в $maxLifetime, удаляем файл if ($elapsedTime >= $maxLifetime) { unlink($file); } } ?>
Крон на выполнение скрипта по удалению устаревших файлов -
# Путь к директории с временными файлами tempDir="/path/to/temp/files"
# Список файлов в директории с временными файлами tempFiles=$(ls $tempDir)
# Время жизни файла в секундах fileLifetime=1800
# Текущее время в секундах currentTime=$(date +%s)
# Цикл по списку файлов for file in $tempFiles do # Проверяем, является ли файл временным файлом if [[ $file == *.tmp.* ]] then # Получаем дату последнего доступа к файлу lastAccessTime=$(stat -c %X $tempDir/$file)
# Разница между текущим временем и датой последнего доступа к файлу timeDiff=$((currentTime - lastAccessTime))
# Проверяем, превышает ли время жизни файла заданный интервал if [ $timeDiff -gt $fileLifetime ] then # Удаляем файл rm $tempDir/$file fi fi done
в общем такое предложил он, чтобы не плодить копии -
<?php $allowedReferer = 'https://domain.com/'; // Замените на адрес вашего сайта $referer = $_SERVER['HTTP_REFERER'] ?? '';
if (strpos($referer, $allowedReferer) !== 0) { // Если реферер не ваш сайт, выводим ошибку и прекращаем выполнение скрипта header('HTTP/1.0 403 Forbidden'); exit('Direct access not allowed.'); }
// Путь к директории для сохранения временных файлов (относительный путь) $tempDir = 'videostmp/';
// Путь к оригинальному файлу (относительный путь) $originalFilePath = 'videos/' . $_GET['file'];
// Абсолютный путь к директории временных файлов $tempDirAbsPath = __DIR__ . '/' . $tempDir;
// Создание директории для временных файлов, если она не существует if (!is_dir($tempDirAbsPath)) { mkdir($tempDirAbsPath, 0755, true); }
// Получение расширения оригинального файла $originalExtension = pathinfo($originalFilePath, PATHINFO_EXTENSION);
// Генерация уникального имени файла с расширением $tempFileName = uniqid() . '.' . $originalExtension; $tempFilePath = $tempDirAbsPath . $tempFileName;
// Проверяем наличие временного файла if (file_exists($tempFilePath)) { // Обновляем время последнего доступа к файлу touch($tempFilePath);
// Выводим прямую ссылку на временный файл $tempFileLink = $tempDir . $tempFileName; echo 'Download link: <a download href="' . $tempFileLink . '">Download</a>'; } else { // Копируем оригинальный файл во временную директорию if (copy($originalFilePath, $tempFilePath)) { // Установка прав доступа для временного файла chmod($tempFilePath, 0644);
// Обновляем время последнего доступа к файлу touch($tempFilePath);
Спорный момент, я бы лучше md5 делал из названия файла, чтобы в случаи одинаковых файлов, не плодились дубли.
Есть) Просто я не стал ее указывать, машина предложила такое -
<?php
// Путь к директории с временными файлами
$tempDir = 'путь/к/директории/для/сохранения/временных/файлов/';
// Время в секундах, через которое временные файлы будут удалены (например, 1 час - 3600 секунд)
$expiryTime = 3600;
// Получение текущего времени
$currentTimestamp = time();
// Проверка всех файлов в директории
$files = glob($tempDir . '*');
foreach ($files as $file) {
// Получение времени создания файла
$fileCreationTime = filectime($file);
// Проверка, если файл создан раньше, чем указанное время удаленияif ($currentTimestamp - $fileCreationTime >= $expiryTime) {
// Удаление файла
unlink($file);
}
}
Ну и крон чтобы выполнять это все -
0 * * * * php /путь/к/delete_temp_files.php
По поводу копий, да это так. Учитывая что они будут удаляться каждый час, это нормально. Да, и если допусстим скрипт не будет создавать файл потомучто он как бы уже есть (создан ранее) и оставит как есть, то есть вероятность что пользователь не успеет докачать файл и он удалится по крону.
я все вспоминаю нытиков из фильма Американцы, все у них не так и не то, но приезжает к ним очень крутой чувак и объясняет им что они полные засранцы и нытики. Хоть это и художественный фильм, но думаю это применимо к нашей ситуации.
Есть, конечно, кто добивался, но с уходом Адсенса все его курсы про сайты превратились в тыкву. Был бы мега спец, а не инфоцыган, то запилил бы курс по бурж сайтам. А так - чтобы жить на том же уровне, решил поинфоцыганить на крипте. А это уже, по большей части, лохотрон.
лол, интернет рынок в ру сегменте вырос значительно в прошлом году, в стране крутятся триллионы рублей, смешно слышать что тут ловить нечего
В общем долго я бодался с ним, не все и не сразу получалось. Однако, он понимает меня куда быстрее чем остальные прогеры. В итоге, я получил рабочий вариант -
Скрипт для удаления устаревших файлов -
Крон на выполнение скрипта по удалению устаревших файлов -
0 * * * * php /var/www/user/data/www/domain.com/deleteoldtmp.phpНу, и скрипт для удаления -
в общем такое предложил он, чтобы не плодить копии -
Функции очистки старых файлов ещё нет.
Спорный момент, я бы лучше md5 делал из названия файла, чтобы в случаи одинаковых файлов, не плодились дубли.
Есть) Просто я не стал ее указывать, машина предложила такое -
Ну и крон чтобы выполнять это все -
0 * * * * php /путь/к/delete_temp_files.phpПо поводу копий, да это так. Учитывая что они будут удаляться каждый час, это нормально. Да, и если допусстим скрипт не будет создавать файл потомучто он как бы уже есть (создан ранее) и оставит как есть, то есть вероятность что пользователь не успеет докачать файл и он удалится по крону.ТС, с чего ты взял? Ни одного достоверного источника нет, что Пузат учит крипте, один какой-то левый лендос не понятно чей.
https://start.bizon365.ru/room/83022/f89113f5dab9
Есть, конечно, кто добивался, но с уходом Адсенса все его курсы про сайты превратились в тыкву. Был бы мега спец, а не инфоцыган, то запилил бы курс по бурж сайтам. А так - чтобы жить на том же уровне, решил поинфоцыганить на крипте. А это уже, по большей части, лохотрон.
лол, интернет рынок в ру сегменте вырос значительно в прошлом году, в стране крутятся триллионы рублей, смешно слышать что тут ловить нечего