Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » Снизится ли нагрузка на базу данных, если счетчик новостей переписать на ajax?

Снизится ли нагрузка на базу данных, если счетчик новостей переписать на ajax?


     25.03.2020    Все вопросы » MySQL    151

вопрос
Хочу заказать модуль, который заменит счётчик просмотров новостей на Аякс счётчик, который будет прибавляют +1 к просмотру, только через 10 секунд нахождения на странице, т.е. поисковые боты не будут считаться и другие боты, имеет ли смысл такое делать или нет? Неподскажите в каком файле описывается функция подсчётов в полной новости dle14.

Ответил: cortin



if( $config['allow_read_count'] AND !$news_page AND !$cstart) {
			if ( $config['allow_read_count'] == 2 ) {

				$readcount = $db->super_query( "SELECT count(*) as count FROM " . PREFIX . "_read_log WHERE news_id='{$row['id']}' AND ip='{$_IP}'" );

				if( !$readcount['count'] ) {

					if( $config['cache_count'] ) $db->query( "INSERT INTO " . PREFIX . "_views (news_id) VALUES ('{$row['id']}')" );
					else $db->query( "UPDATE " . PREFIX . "_post_extras SET news_read=news_read+1 WHERE news_id='{$row['id']}'" );

					$db->query( "INSERT INTO " . PREFIX . "_read_log (news_id, ip) VALUES ('{$row['id']}', '{$_IP}')" );
				}

			} else {

				if( $config['cache_count'] ) $db->query( "INSERT INTO " . PREFIX . "_views (news_id) VALUES ('{$row['id']}')" );
				else $db->query( "UPDATE " . PREFIX . "_post_extras SET news_read=news_read+1 WHERE news_id='{$row['id']}'" );
			}
		}


как вижу весь затык в read_log, если $config['allow_read_count'] != 2 тогда макс производительность, если хотите еще быстрей можно убрать insert into, но лучше посмотреть на самом серваке что тормозит, какая страницу, я бы так сделал, потому что все эти догадки только время отнимают. Сделаеш, а не помогло и опять догадки. Лучше взять дамп и уже посмотреть наверняка

14 комментариев

cortin
Юзер

cortin - 25 марта 2020 15:20 -

Кстате косательно "поисковые боты не будут" это все в пхп реализуется. даже если будет аякс запрос и 10 секунд, и пойжет трафик, будет таже тормозня, но на 10 секунд поже, я бы просто бы плагином модифицировал код иди отрубил бы вообще, если отрубив пошло все классно, тогда бы просто плагином сделал бы счетчик иначе

wcw2007
Юзер

wcw2007 - 25 марта 2020 15:40 -

Но почему, тормоза будут на 10 секунд позже? основную нагрузку дают боты яндекс индексирует со скорость 3 страницы в секунду, а может и 20 страниц в секунду, если на сайте 20к новостей? и бот обходит весь сайт? + гугл, майл, В какой файле приведенный Вами пример?

cortin
Юзер

cortin - 26 марта 2020 09:59 -

Я считаю что если пишут плагин то просто лучше добавить код детекта ботов и тогда счетчик не запускать, без всяких аяксов. Это же проще

vitnet
Эксперт

vitnet - 25 марта 2020 23:35 -

Ну раз речь идёт о просмотре полной новости значит за это отвечает соответственно файл engine/modules/show.full.php

wcw2007
Юзер

wcw2007 - 26 марта 2020 00:00 -

А сама идея по вашему стоящая или нет? Будет ли эффект от записи в базу по ajax через 10 секунд или нет, на сайте с 20к новостями.

cortin
Юзер

cortin - 26 марта 2020 10:01 -

А зачем все эти аяксы, сделайте в пхп фильтрацию на ботов и все. Не надо писать лишний код, если 10 сек еще, там может просто счетчики вырубить ?

dj-avtosh
PHP-developer

dj-avtosh - 26 марта 2020 11:04 -

что такое боты? Шедулеры?

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

cortin
Юзер

cortin - 26 марта 2020 11:18 -

я имел ввиду бот яндекса или гугла, который индексирует сайт.

dj-avtosh
PHP-developer

dj-avtosh - 26 марта 2020 11:07 -

Здравствуйте, пусть список новостей полностью кешируется, однако счетчик новостей проставляется следом - то есть на бэкенд допустим проходит запрос с id выведенных новостей, который вернет json с кол-вами просмотров и проставит их новостям.

10 секунд ожидания тут не нужно.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

cortin
Юзер

cortin - 26 марта 2020 11:20 -

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

LazyDev
Эксперт

LazyDev - 26 марта 2020 15:01 -

cortin, что поправить? Убрать новости или базу? :stonks:

Мой блог: LazyDev.pro
Если мне не интересен вопрос - не помогаю, и за этим по контактам прошу не писать.

cortin
Юзер

cortin - 26 марта 2020 16:06 -

я бы хотел взять доступ, и посмотреть где имено что тормозит, кстате для этих целей классно плагин написать, который бы замеря время работы скл запросов, slow-log, не всегда дает полноценую работу, автор напиши мне в личку если надо я тебе накатаю это плагин но на след неделе, на этой занат

LazyDev
Эксперт

LazyDev - 26 марта 2020 16:15 -

cortin, ох не доверял бы я таким людям.

Давно уже всё есть https://sandev.pro/shop/98-power-log-by-sander.html

Мой блог: LazyDev.pro
Если мне не интересен вопрос - не помогаю, и за этим по контактам прошу не писать.

cortin
Юзер

cortin - 26 марта 2020 16:43 -

Не доверял мне или ему ? Слушай, но этот модуль выявляет медленные страници, он не выявляет почему они медленные, там вроде лога sql запросов нет. Может быть ситуации когда запросы тормозят изза нагрузки на сервер, а бывают изза обьема данных, это все надо смотреть в ручную. Ну или плагин, у меня на кастомном движке сделано что можно смотреть по сессиям, тогда можно смотреть на какой страницу что вызывалось что тормозило, таймеры на участки кода стоят, тогда действительно можно найти такие ошибки, о которых и не знал

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

 23.04.2014 karen923  MySQL
наверх