Я разработал скрипт, который доставляет файлы по защищенному URL-адресу, цель - имитировать частный хостинг файлов Amazon S3.Пользователь отправляет запрос на сервер, который генерирует URL, который можно использовать для доступа к файлу.Срок действия сгенерированного URL истекает через 2 часа с момента его создания.
Это расшифрованная часть скрипта:
$data = decrypt($_GET['data']);
$data_json = json_decode($data,true);
// print_r($data_json); die;
$elapsed = strtotime('now') - $data_json['expire'];
if ($elapsed > URLEXPIRE) {
echo json_encode(array(
'status'=>false,
'error'=>'URL expired.',
'debug'=>$data,
'debug2'=>$_GET['data']
));
die;
}
$object = OBJECTSTORE . $data_json['path'];
header('X-Elapsed: ' . $elapsed);
// header('Content-Type: '.get_mime_type($object));
header('Content-Type: application/octet-stream');
// header('Content-Disposition: attachment; filename=' . basename($object));
if (strpos($data_json['path'],'?download'))
header('Content-Disposition: attachment;');
// echo file_get_contents($object);
readfile($object);
die;
Во время моего теста на промежуточном сервере скрипт работает нормально,Тем не менее, после выпуска в производство при доставке больших видеофайлов это кажется медленным.Загрузка URL-адреса в качестве источника тега HTML-видео занимает некоторое время.Я не знаю, помогает ли это, но функция decrypt
использует openssl_decrypt
с использованием шифра AES-256-CBC.
Есть идеи более эффективного подхода к этому?