PHP дает изображение с ограниченным диапазоном частот и кэшированием? - PullRequest
0 голосов
/ 17 февраля 2012

Здесь - ссылка на пример PHP-сценария регулирования полосы пропускания для файла. Я вижу улучшение, которое я могу сделать, это не связано с тем, что я сделаю сам позже, но кроме этого ... Как вы могли бы использовать этот сценарий для создания другого сценария, который возвращает изображение с ограниченной пропускной способностью, но кэширует изображения навсегда? Изображение никогда не изменится.

1 Ответ

1 голос
/ 17 февраля 2012

Я думаю, что все, что вы просили, это изменить этот скрипт для работы с изображением и кэшировать содержимое.Это должно сделать это, в ожидании любых незначительных ошибок, которые я могу иметь:

<?php

$file = "yourimage.jpg"; // file to be send to the client
$speed = 8.5; // 8,5 kb/s download rate limit

// if $file is coming from get, I would use this to prevent against a nullbyte attack:
$file = str_replace(chr(0), '', $file);

if (file_exists($file) && is_file($file)) {
    header("Expires: ".gmdate('D, d M Y H:i:s', time()+3600*24*3000).'GMT'); // expires in 3000 days. 
    header("Pragma: cache");
    header("Content-Type: image/jpeg"); // needs to be changed for the file type.
    header("Content-Length: ".filesize($file));
    header("Cache-Control: max-age=" . 3600*24*3000);

    flush();

    $fd = fopen($file, "r");
    while(!feof($fd)) {
         echo fread($fd, round($speed*1024));
        flush();
        sleep(1);
    }
    fclose ($fd);

}
...