Как сделать счетчик просмотров изображения на PHP

123 4
E
На сайте с 01.10.2017
Offline
96
#11
Алеандр #:
то нагрузочка будет очень даже значимой

Вполне нормальная нагрузка, проверено.


Алеандр #:
это вам не статику через nginx отдавать

Совмещать не пробовали? Делать инкремент в базе данных скриптом и "статику через nginx отдавать" 😉

Домены на продажу: https://p20.ru/collection/domains-for-sale
UL
На сайте с 04.08.2013
Offline
68
#12

В общем, как я понимаю, единого мнения по этому вопросу нет. Кто как умеет так и делает. Хотя задача на первый взгляд показалась тривиальной.

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

UL
На сайте с 04.08.2013
Offline
68
#13
.
Алеандр
На сайте с 08.12.2010
Offline
184
#14
use_linux #:

В общем, как я понимаю, единого мнения по этому вопросу нет. Кто как умеет так и делает. Хотя задача на первый взгляд показалась тривиальной. Я сделал счетчик в куках, сохраняю пока в файл. Парсить логи вэб-сервера тоже интересный вариант, но по-моему, слишком мудреный.

Выше уже было сказано и не раз: зависит от того, какое количество обращений к изображениям, какое количество изображений, какой трафик, какой потенциальный прогнозируемый трафик. Отсюда можно танцевать в сторону оптимизации данного процесса: делать на лету или делать отложенный учет.

В парсинге логов ничего нет мудреного, проще некуда и не влияет на работоспособность сайта на ходу. Если требуется только учет - вполне рабочий вариант. Но он не подойдет, если при показе изображения необходимо еще что-то сделать со стороны php, например, поставить специальную куку, собрать какие-то данные о пользователе и тд. Тогда парсинг логов будет недостаточен и по-любому придется делать скрипт.

Пока нет конкретики по задаче - мнения и будут разные.

Алеандр
На сайте с 08.12.2010
Offline
184
#15
estic #:
Совмещать не пробовали? Делать инкремент в базе данных скриптом и "статику через nginx отдавать" 😉

Да, точно, никакой разницы, обрабатывать скрипт и отдавать изображение или просто из кэша отдавать изображение. Ну никакой. То-то разные идиоты для статики целые отдельные сервера выделяют при нагрузках, делать же им больше нечего. Вы не меряйте разницу, когда у вас 100 калек на сайте в день и когда ведется работа с высоко нагруженными системами с миллионными обращениями. Не смешите, право слово. Пока вам не дали все вводные - не стоит утверждать, что разница будет не ощутима.

Solmyr
На сайте с 10.09.2007
Offline
501
#16
estic #:
Что дороговато?
Писать в mysql дороговато. Причем именно
SET `count`=`count`+1

Дороговато и для MyISAM и для INNODB
Dreammaker
На сайте с 20.04.2006
Offline
570
#18
Алеандр #:
Да, точно, никакой разницы, обрабатывать скрипт и отдавать изображение или просто из кэша отдавать изображение. Ну никакой.

X-Accel-Redirect

E
На сайте с 01.10.2017
Offline
96
#19
Алеандр #:
Да, точно, никакой разницы, обрабатывать скрипт и отдавать изображение или просто из кэша отдавать изображение.

Значит, не пробовали. Смотрите сообщение выше, если до сих пор не в курсе. Что касается кэша, можно множество счетчиков привязать к одному и тому же изображению точно так же, как и в случае "пикселя".

Алеандр #:
То-то разные идиоты для статики целые отдельные сервера выделяют при нагрузках, делать же им больше нечего.
Никто об этом не писал. Не знаю, какому идиоту могут понадобиться счетчики "для всего".


use_linux #:
Я сделал счетчик в куках
Как обычно, под конец всплывает одна такая "незначительная" деталь, о которой автор забыл упомянуть сразу 😀
Алеандр
На сайте с 08.12.2010
Offline
184
#20
estic #:

Значит, не пробовали. Смотрите сообщение выше, если до сих пор не в курсе.

Еще раз, если по простому никак. Выполнение скрипта, хоть с одновременной статикой, хоть с последовательной статикой - это две операции для сайта/сервера. Или это так трудно посчитать? Выполнение отдачи jpg+скрипт записи в базу или просто отдача jpg статикой. 1+1=2 или все же непонятно и так?

Если у вас задача все картинки считать, то хоть редиректите вы командой, хоть вы отдаете апачем после учета - не имеет никакого значения, вы на КАЖДЫЙ вызов картинки будете делать +1 инкремент в базу или файл, таким образом нагружая сервак постоянным вызовом скрипта. На каждое обращение будет выполняться не 1 операция "отдать jpg", а две операции: "отдать jpg" и "добавить в базу". И чем больше у вас изображений, которые требуется считать, тем больше нагрузка будет на сервере.

Именно потому такой учет не подойдет, если требуется считать обычные картинки, а не счетчик. Ваш сервак, при хорошем трафике, будет потреблять значительно большие ресурсы в силу того, что он считает. И абсолютно пофигу как вы отдали статику, вы по-любому делаете +1 операцию сверху.

Если уж и это никак, то по-другому не объяснить. Если для вас 1+1 = 1, то тут я бессилен.

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий