Счетчик скачивания по ссылке

NikNik-YKT

Дилитант-самоучка
Приветы! Создал простейшее приложение для андроида и залил apk файл на сервер. Сверстал страницу презентации и все такое, но хотелось бы знать сколько раз скачивали мое приложение по ссылке. Может кто знает годное готовое решение без использования базы данных? Сайт простой, на html, css и js.
 

nllabs

Новичок
Привет!
А где будут храниться данные ?
Кроме того некоторые downloader-ы качают в несколько потоков, как это обрабатывать ?
 

nllabs

Новичок
Я так понял, ты хочешь это сделать и без PHP ?
Если нажать на ссылку, закачка то начнется, только по какому событию это отлавливать ?
Мне кажется, ты плохо разбираешься в том, какая часть действия загрузки происходит на сервере, а какая - на стороне клиента.
 
Последнее редактирование:

NikNik-YKT

Дилитант-самоучка
Я так понял, ты хочешь это сделать и без PHP ?
Если нажать на ссылку, закачка то начнется, только по какому событию это отлавливать ?
Мне кажется, ты плохо разбираешься в том, какая часть действия загрузки происходит на сервере, а какая - на стороне клиента.
Без php не обойтись, я знаю. В теге вопроса написано же.
 

nllabs

Новичок
Механизм таков:
на сервере будет стоять PHP-скрипт, который будет отдавать файл (apk), поищи в инете.
Данные о количестве загрузок будет храниться в файле на сервере.
При каждой загрузке (запуск скрипта) это количество будет увеличиваться этим же скриптом на 1.

Хочу предупредить, что этот метод имеет много недостатков, количество загрузок будет приблизительным.
Может быть как меньше реального, так и больше.
 

Alexandre

PHPПенсионер
Механизм таков:
на сервере будет стоять PHP-скрипт, который будет отдавать файл (apk), поищи в инете.
Данные о количестве загрузок будет храниться в файле на сервере.
При каждой загрузке (запуск скрипта) это количество будет увеличиваться этим же скриптом на 1.

Хочу предупредить, что этот метод имеет много недостатков, количество загрузок будет приблизительным.
Может быть как меньше реального, так и больше.
1) А почему кол-во загрузок будет приблизительным?
2) какие есть еще недостатки этого метода?
3) файл, в котором будет храниться счетчик - нужно лочить, чтоб получить точное значение загрузок.
 

Alexandre

PHPПенсионер
Можно и без php, если есть доступ к полной конфигурации веб-сервера.
Настроить, чтобы access log для этого файла писался отдельно.
В nginx можно вот так https://stackoverflow.com/questions/33855350/how-to-notify-if-a-resource-completely-download-in-nginx
Тогда придется еще делать парсер логов..., хотя, если настроен ротатор, то можно считать кол-во обращений wc -n
А можно просто посчитать лог, без отдельного ответления: grep download.apk /var/log/....access.log | grep '200 OK' | wc - n
проще сделать, как подсказал предыдущий товарищ. Не думаю, что там будет интенсивность скачивание как у птичек.
 

DiMA

php.spb.ru
Команда форума
Тогда придется еще делать парсер логов...
csv-лог от nginx можно напрямую в clickhouse загонять... за исключением мелких нюансов, когда nginx пишет "-" если переменной нет

в кроне: rename логу, команду nginx на ротацию лога, чтобы тот продолжил писать в новый пустой файл, импорт переименованного файла в базу

кто-нибудь знает, как отучить nginx минусы (-) в логи лепить?

а вообще, оригинальную задачу на Lua/nginx решать надо, самое гибкое и оптимальное по коду решение
 

fixxxer

К.О.
Партнер клуба
log_format escape=json это не меняет случайно?
(проверять лень)
 

nllabs

Новичок
1) А почему кол-во загрузок будет приблизительным?
2) какие есть еще недостатки этого метода?
3) файл, в котором будет храниться счетчик - нужно лочить, чтоб получить точное значение загрузок.
1) Если файл не лочить - при очень интенсивной загрузке (посчитанное) кол-во загрузок будет меньше.
При обрыве соединения пользователь еще раз запустит загрузку.
Если качать файл Downloader-ом, многие из них качают в несколько потоков. Как это считать ?
Если ничего не предпринять - посчитается как несколько загрузок.
2) Недостатки - лишний расход памяти. Раз PHP участвует в отдаче файла клиенту, то он будет занимать
память, пока клиент не скачает файл. Если качают одновременно 100 клиентов - в памяти висит 100
экземпляров PHP.
 
Сверху