Как узнать сколько раз реально скачали ваш файл?

162
08 декабря 2017, 05:03

Всем доброго времени суток, стоит задача создать контроллер реального количества скачиваний файлов не просто обработчик нажатия на onсlick а учитывать отмену скачивания и обрыв соединения если файл хоть теоретически не скачен не изменять количество скачиваний (точнее zip файлов если это важно) (сервер nginx) в результате должна получиться статистика например Храбан Олександр в 19:00 скачал файл Eset.zip, либо Каркуша Артемий пытался скачать файл но не скачал данную проблему необходимо решить желательно через php?

Answer 1

Нужно считывать с БД count и при скачивании файла, UDATE +1 count. использовал RedBeanPHP. Вот пример:

require('connect.php'); 
header("Content-type: text/html; charset=windows-1251");
$array = array("file.pdf", "files/file.pdf", "files/file2.pdf", "files/file3.pdf");
function updateFile($count, $id)
{
    $query = R::getAssoc("UPDATE files SET count = $count WHERE id = '$id'");
    return $query;
}
function getCount($id)
{
    $query  = R::findOne( 'files', 'id = '.$id.'');
    return $query;
}
if ($_GET['id'] == 1){
    $file = $array[1];
    header('Content-Disposition: attachment; filename='.$array[1].'');      
    $count = getCount(1);
    updateFile($count['count'] + 1, 1);
    readfile($file);
}
else if ($_GET['id'] == 2)
{
    $file = $array[2];
    header('Content-Disposition: attachment; filename='.$array[2].'');
    $count = getCount(2);
    updateFile($count['count'] + 1, 2);
    readfile($file);
}
else if ($_GET['id'] == 3)
{
    $file = $array[3];
    header('Content-Disposition: attachment; filename='.$array[3].'');
    $count = getCount(3);
    updateFile($count['count'] + 1, 3);
    readfile($file);
}
else
{
    header('Location: http://site.com/');
    exit;
}

в примере несколько файлов..

connect.php - подключение к БД

READ ALSO
Yii2 not exist валидатор

Yii2 not exist валидатор

Появилась необходимость перед сохранением модели проверять наличие связейНапример, перед пометкой товара "удалено" нужно проверить наличие...

150
ta-lib есть для php?

ta-lib есть для php?

Ищу библиотеку советников и сигналов на phpНашел ta-lib - но она на питоне, есть что то подобное для PHP?

151
Ошибка выделения динамической памяти

Ошибка выделения динамической памяти

Есть решение, состоящее из двух проектовПервый это статическая библиотека

278