[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Колличество просмотров
SunSet
PHP
$views $pop['view'] + 1;//добавляем +1 к числу просмотров
$updates mysql_query ("UPDATE articles SET view='$views' WHERE id='$id'",$db);


Подскажите, как этот примитив просмотра страницы дописать, чтоб был какойто интервал в пару сек. Даже можно не проверять куки или айпишник, просто чтоб команда апдейта (UPDATE articles SET ) работала с интервалом. А то так жмешь Ф5 и полетел счетчик вперед к миллиону blink.gif

Вот на этом форуме, например, есть какойто интервал, обновляет значение не по Ф5, а раз в пару сек.



Спустя 1 час, 16 минут, 3 секунды (20.09.2009 - 04:02) Гость_hara написал(а):
Ну на то это и количество просмотров, что бы счётчик летел к миллиону, -
в этом плане всё в порядке.

А если три человека одновременно(ну почти) откроют страницу как вы собираетесь увеличивать счётчик с таймаутом но без проверки ip например?
И что будет показывать такой счётчик?

Ну как вариант можете добавить в таблицу поле типа datetime и ip и записывать туда с определённым таймаутом, например в 5 сек.
Там сохраняется время последнего обратившегося и его ip.
Таким образом при обновлении (update) если ip не равен то обновляем, если равен, - то обновляем только если прошло 5 секунд.
Конечно если будет много народа и всё будут обновлять страницу то таймаут считаться не будет, но это всё же какой то вариант.


ну примерно так:
ip - varchar (15)
ts - timestamp (ну или в datetime переделайте)
PHP
$ip $_SERVER['REMOTE_ADDR'];
$updates mysql_query ("UPDATE `articles`
    SET `view`=`view`+1, `ip`='$ip', `ts`=NOW()
    WHERE id='$id'
        AND ((`ip`='$ip' AND NOW() -`ts` > 5) OR  (`ip`<>'$ip'))"
,
    
$db);

Спустя 18 минут, 23 секунды (20.09.2009 - 04:21) SunSet написал(а):
Гость_hara
Спасибо за этот вариант. Это уже получше. Пусть будет погрешность в пару единиц, если сразу два человека обновят, но хоть както получится угомонить Ф5 smile.gif

SQL
$ip = $_SERVER['REMOTE_ADDR'];
$updates = mysql_query ("UPDATE `articles`
SET `view`=`view`+1, `ts`=NOW()
WHERE id='$id' AND ((NOW() -`ts` > 2))",$db);

Айпишник решил не записывать во избежание лишней (малонужной) нагрузки на мускуль.

Спустя 7 часов, 43 минуты, 30 секунд (20.09.2009 - 12:04) waldicom написал(а):
Тогда это не статистика будет, а хрен понять что

Спустя 3 часа, 10 минут, 19 секунд (20.09.2009 - 15:15) SunSet написал(а):
waldicom
Почему? Это же не мэйл.ру, где в секунду может несколько запросов на просмотр статьи может быть. Даже вот на этом форуме поставить интервал в 2 сек - ничего не изменится. Редко когда больше четырех-пяти человек одновременно просматривают тему. И если из сотни просмотров потеряется 5-10 шт. - это не критично.

Спустя 24 минуты, 49 секунд (20.09.2009 - 15:39) sergeiss написал(а):
"Защиту от Ф5" надо делать по-другому, а не таким образом.

Спустя 6 минут, 16 секунд (20.09.2009 - 15:46) SunSet написал(а):
sergeiss
Нуу.. я же и спрашиваю для того, чтоб посмотреть на различные варианты решения задачи. Если есть простое и получше решение - с радостью посмотрю smile.gif

Спустя 18 минут, 33 секунды (20.09.2009 - 16:04) sergeiss написал(а):
"Защита от Ф5", на самом деле, делается очень просто. Причем, вариантов всяких параметров может быть много разных.
Суть такая: после нажатия кнопки в форме переходим на некую промежуточную страницу. В самом начале даешь команду перейти на другую страницу через 7 секунд.
PHP
header"Refresh: ...... ");

А на самой странице можно вывести текст типа "Подождите, через 7 секунд вы вернетесь на страницу ввода...". По истечение времени переходишь обратно.
Естественно, время можно установить любое smile.gif

Спустя 8 минут, 7 секунд (20.09.2009 - 16:12) SunSet написал(а):
sergeiss
Это немного не то. Это вариант, если заполняется поле, отправляются какието данные. Я же про простой просмотр новости, вот как тут - зашел в топик, посмотрел и вышел. А если плохое настроение то зашел, нажал ф5 и счетчик пошел наверстывать упущеное в молодости smile.gif А то делать при заходе в топик "Подождите, вас перенус туда через столько то" както страшно)

Я про простое "Просмотров 249", а не про повторное добавление комментария или сообщения по Ф5


_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.