PHP отдача файлов по расписанию

198
15 августа 2017, 16:27

Суть такова: в директории есть несколько файлов. В зависимости от времени должен отдаваться определённый файл с определённого байта. К примеру, в 6:00 клиент получает в ответ на запрос файл № 1 с первого байта, в 6:01 - с 20, в 7:00 - файл №2 и т. д. Заранее благодарен за ответ.

Answer 1

Используйте fseek — Устанавливает смещение в файловом указателе.

<?php
function getDataByTime($time) {
    list($hour, $minute) = explode(':', $time);
    $minutes = $hour * 60 + $minute;
    if ($minutes <= 360) {
        // До 6:00
        $file = 'file1';
        $offset = 0;
    } elseif ($minutes > 360 && $minutes <= 420) {
        // С 6:01 до 7:00
        $file = 'file2';
        $offset = 4;
    } elseif ($minutes > 420) {
        // С 7:01 и позже
        $file = 'file2';
        $offset = 8;
    }
    if (file_exists($file)) {
        $handle = fopen($file, 'r');
        fseek($handle, $offset);
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="'.basename($file).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file) - $offset);
        fpassthru($handle);
        exit;
    }
}
getDataByTime('7:01');
READ ALSO
Перекодировка .csv файла в php

Перекодировка .csv файла в php

Доброго времени сутокПишу обработчик

213
php, не переносится строка [требует правки]

php, не переносится строка [требует правки]

Почему не переносит на новую строку в phpПробовал: \n, \r\n,

164
Восстановление пароля в Laravel 5.4

Восстановление пароля в Laravel 5.4

Как настроить восстановление пароля через электронную пошту используя стандартное обеспечение и PHPMailer?

807
Bitrix компонент rss, ajax

Bitrix компонент rss, ajax

Пишу компонента по парсингу и записи Rss ленти в инфоблоки, не зная bitrix-аЗдесь результат: https://bitrix

318