Перейти к публикации

Счётчик новостей у категории


Рекомендованные сообщения

Версия скрипта: 8.2

Попросили сделать модуль категорий.

Сразу в мыслях "зачем лишние запросы если есть массив $cats_info".

Дальше лезу в таблицу _category, вижу столбец news_numer.

Думаю ура, сделаю модуль категорий без одного запроса.

Тут весь кайф и обломался :( движок при добавлении новости этот счётчик не обновляет :( обидно

Ссылка на сообщение
Поделиться на других сайтах

Дальше лезу в таблицу _category, вижу столбец news_numer.

Это поле настроек категории и определеяет сколько новостей выводить на страницу при просмотре категории, а не какой то счетчик новостей

Ссылка на сообщение
Поделиться на других сайтах

Только что нашёл сам :) блин, смарозил что-то... ну.. бывает - только проснулся.

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

Зачем тебя попросили сделать счетчик новостей если ты в php не шаришь? это же елементарно подсчитать количество новостей в категории

Ссылка на сообщение
Поделиться на других сайтах

Отнюдь. Для движка дле это далеко не элементарная задача - прийдётся пересчитывать все новости с их выборкой. Либо делать отдельный запрос для каждой категории.

В данном случае рациональнее всего иметь счётчик в бд и обновлять его. Это легче любых запросов, даже с кэшем. Лично мной проверено :)

vandamme,

а теперь ждём ваших профессиональных решений B) Судя по всему попросили сделать модуль категорий, в котором рядом с названием категории будет кол-во новостей в оной. Подскажите ка решение :rolleyes:

Ссылка на сообщение
Поделиться на других сайтах

Отнюдь. Для движка дле это далеко не элементарная задача - прийдётся пересчитывать все новости с их выборкой. Либо делать отдельный запрос для каждой категории.

В данном случае рациональнее всего иметь счётчик в бд и обновлять его. Это легче любых запросов, даже с кэшем. Лично мной проверено :)

vandamme,

а теперь ждём ваших профессиональных решений B) Судя по всему попросили сделать модуль категорий, в котором рядом с названием категории будет кол-во новостей в оной. Подскажите ка решение :rolleyes:

Все гораздо проще.


			$db->query("SELECT category FROM {$prefix}_post WHERE approve=1");

			while ($line = $db->get_row()) $count = $count ? "$count,{$line['category']}" : $line['category'];

			$count = array_count_values(explode(',', $count));

да и к томуже этот модуль давно есть

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах

dlehack,

как-то вы невнимательно читаете) Я же написал

прийдётся пересчитывать все новости с их выборкой

т.е. то, что вы и сделали. Но это не оптимальный вариант, поскольку - кто-то из админов отредактировал новость, кто-то из админов добавил новость, кто-то из модераторов удалил новость, кто-то из модераторов снял с публикации .... и т.д., и т.п.... и чтоже будет при 100К новостей? И всякий раз нужно будет обновить счётчик. Можно конечно обновлять раз в сутки по кэшу.. но это не интересно :lol:

Так вот пока ещё никто не предложил действующего рационального варианта под указаную задачу :)

Ссылка на сообщение
Поделиться на других сайтах

Уже предлагал как-то раз - можно воспользоваться "суррогатным подсчётом количества новостей в категории", если под категорией подразумевать тег, выводимый в облаке: количество новостей для каждого тега выводится, по-моему, в дефолтном шаблоне - подведите мышку...

Ссылка на сообщение
Поделиться на других сайтах

dlehack,

как-то вы невнимательно читаете) Я же написал

прийдётся пересчитывать все новости с их выборкой

т.е. то, что вы и сделали. Но это не оптимальный вариант, поскольку - кто-то из админов отредактировал новость, кто-то из админов добавил новость, кто-то из модераторов удалил новость, кто-то из модераторов снял с публикации .... и т.д., и т.п.... и чтоже будет при 100К новостей? И всякий раз нужно будет обновить счётчик. Можно конечно обновлять раз в сутки по кэшу.. но это не интересно :lol:

Так вот пока ещё никто не предложил действующего рационального варианта под указаную задачу :)

Ну и в чем проблема.

100К новостей без проблем работает проверенно на практике.

Можете сами проверить вот этот модуль http://4dle.ru/mods/1147157236-modul-dinamicheskoe-menju-v.2.0.html

Не могу привести показатели для 100к новостей

Вот для 36000

с включенным модулем

0,78561сек - генерация страницы после очистки кэша 16 запросов БД

0,01931сек - уже после как результаты кэшированы 1 - запрос БД

с выключенным модулем

0,47363сек - генерация страницы после очистки кэша 15 запросов БД

0,01857сек - уже после как результаты кэшированы 1 - запрос БД

и это на виртуальном хостинге jino

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах

И зачем тратить лишние ресурсы на такие запросы? Можно сделать гораздо быстрее, просто придётся больше изменений вносить.

Ссылка на сообщение
Поделиться на других сайтах

И зачем тратить лишние ресурсы на такие запросы? Можно сделать гораздо быстрее, просто придётся больше изменений вносить.

Смысл если и так все работает и причем очень даже неплохо, любите изменения вносите, выкладывайте и заценим.

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах

любите изменения вносите, выкладывайте и заценим

я знал, что вы когда-нибудь это спросите, однако почитайте внимательно тему:

я не нарывался на выкладывание своих решений, а лишь предложил vandamme выложить своё уникальное решение и объяснил, что "простая" задача может быть отнюдь не простой, в том числе и на вашем предложении. Я ведь не задавал вопрос, "как бы сделать, чтоб работало", а вы мне ответили

Смысл если и так все работает

Представьте себе, что я заказчик и не удовлетворён скоростью запроса 0,3с. и хочу либо вообще не иметь этот запрос, либо иметь его минимум с 10кратным повышением быстродействия. Ваши предложения? В частности интересует ответ vandamme :)

Ссылка на сообщение
Поделиться на других сайтах

любите изменения вносите, выкладывайте и заценим

я знал, что вы когда-нибудь это спросите, однако почитайте внимательно тему:

я не нарывался на выкладывание своих решений, а лишь предложил vandamme выложить своё уникальное решение и объяснил, что "простая" задача может быть отнюдь не простой, в том числе и на вашем предложении. Я ведь не задавал вопрос, "как бы сделать, чтоб работало", а вы мне ответили

Смысл если и так все работает

Представьте себе, что я заказчик и не удовлетворён скоростью запроса 0,3с. и хочу либо вообще не иметь этот запрос, либо иметь его минимум с 10кратным повышением быстродействия. Ваши предложения? В частности интересует ответ vandamme :)

я так понял это топик для мечтателей просто поболтать помечтать о том как былобы хорошо не 0,3 а 0,03

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

а по поводу заказчика не ужто если вас попросят чтоб страница за 0.000000000000000000000000000000000000000000001 сек генерилась вы будете это делать (могу пожелать успехов и поменьше таких заказчиков)

Ссылка на сообщение
Поделиться на других сайтах

ну я вообще-то и имел в виду пересчет новостей, не потребуется отдельная таблица для создания записи о количестве новостей

Ссылка на сообщение
Поделиться на других сайтах

я так понял это топик для мечтателей просто поболтать помечтать о том как былобы хорошо не 0,3 а 0,03

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

нет, почему мечтаем. Если нужно - можно сделать. Конечно не за бесплатно B) Тема о том, что не мешало бы вначале разобраться в обсуждаемом вопросе, а потом вставлять комментарии :)

ну я вообще-то и имел в виду пересчет новостей, не потребуется отдельная таблица для создания записи о количестве новостей

по большому счёту - это было бы самое высокое по скорости и самое низкое по ресурсам сервера - решение. Только потребовалось бы вносить изменения минимум в 5 файлов дле, т.е. везде, где идёт редактирование новостей для инкремента и декремента счётчиков.

Если бы все форумы и движки работали по предлагаемым вами принципам подсчёта, то хостеры бы свихнулись (или тарифы были бы в 10 раз выше). А что-то придумывать тут и не нужно - тема стара как мамонт. Опять же - зачем предлагать сомнительные решения хаков на 4dle, если имеет смысл просто посмотреть как это сделано в провереных годами движках форумов (где тема счётчиков очень актуальна, т.к. они не только показывают информацию, но и являются функциональной частью скрипта, от которой зависит его работа).

Изменено пользователем Al-x
Ссылка на сообщение
Поделиться на других сайтах

нет, почему мечтаем. Если нужно - можно сделать. Конечно не за бесплатно Тема о том, что не мешало бы вначале разобраться в обсуждаемом вопросе, а потом вставлять комментарии

не мне не нужно у меня все есть

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...