flo.mAster 7 Опубликовано: 18 августа 2009 Рассказать Опубликовано: 18 августа 2009 Версия скрипта: 8.2 Попросили сделать модуль категорий. Сразу в мыслях "зачем лишние запросы если есть массив $cats_info". Дальше лезу в таблицу _category, вижу столбец news_numer. Думаю ура, сделаю модуль категорий без одного запроса. Тут весь кайф и обломался движок при добавлении новости этот счётчик не обновляет обидно Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 18 августа 2009 Рассказать Опубликовано: 18 августа 2009 Дальше лезу в таблицу _category, вижу столбец news_numer. Это поле настроек категории и определеяет сколько новостей выводить на страницу при просмотре категории, а не какой то счетчик новостей Цитата Ссылка на сообщение Поделиться на других сайтах
flo.mAster 7 Опубликовано: 18 августа 2009 Рассказать Опубликовано: 18 августа 2009 Автор Только что нашёл сам блин, смарозил что-то... ну.. бывает - только проснулся. Цитата Ссылка на сообщение Поделиться на других сайтах
vandamme 0 Опубликовано: 26 августа 2009 Рассказать Опубликовано: 26 августа 2009 Зачем тебя попросили сделать счетчик новостей если ты в php не шаришь? это же елементарно подсчитать количество новостей в категории Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 26 августа 2009 Рассказать Опубликовано: 26 августа 2009 Отнюдь. Для движка дле это далеко не элементарная задача - прийдётся пересчитывать все новости с их выборкой. Либо делать отдельный запрос для каждой категории. В данном случае рациональнее всего иметь счётчик в бд и обновлять его. Это легче любых запросов, даже с кэшем. Лично мной проверено vandamme, а теперь ждём ваших профессиональных решений Судя по всему попросили сделать модуль категорий, в котором рядом с названием категории будет кол-во новостей в оной. Подскажите ка решение 1 Цитата Ссылка на сообщение Поделиться на других сайтах
dlehack 14 Опубликовано: 27 августа 2009 Рассказать Опубликовано: 27 августа 2009 (изменено) Отнюдь. Для движка дле это далеко не элементарная задача - прийдётся пересчитывать все новости с их выборкой. Либо делать отдельный запрос для каждой категории. В данном случае рациональнее всего иметь счётчик в бд и обновлять его. Это легче любых запросов, даже с кэшем. Лично мной проверено vandamme, а теперь ждём ваших профессиональных решений Судя по всему попросили сделать модуль категорий, в котором рядом с названием категории будет кол-во новостей в оной. Подскажите ка решение Все гораздо проще. $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)); да и к томуже этот модуль давно есть Изменено 27 августа 2009 пользователем dlehack 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 27 августа 2009 Рассказать Опубликовано: 27 августа 2009 dlehack, как-то вы невнимательно читаете) Я же написал прийдётся пересчитывать все новости с их выборкой т.е. то, что вы и сделали. Но это не оптимальный вариант, поскольку - кто-то из админов отредактировал новость, кто-то из админов добавил новость, кто-то из модераторов удалил новость, кто-то из модераторов снял с публикации .... и т.д., и т.п.... и чтоже будет при 100К новостей? И всякий раз нужно будет обновить счётчик. Можно конечно обновлять раз в сутки по кэшу.. но это не интересно Так вот пока ещё никто не предложил действующего рационального варианта под указаную задачу Цитата Ссылка на сообщение Поделиться на других сайтах
Edward 4 Опубликовано: 27 августа 2009 Рассказать Опубликовано: 27 августа 2009 Уже предлагал как-то раз - можно воспользоваться "суррогатным подсчётом количества новостей в категории", если под категорией подразумевать тег, выводимый в облаке: количество новостей для каждого тега выводится, по-моему, в дефолтном шаблоне - подведите мышку... Цитата Ссылка на сообщение Поделиться на других сайтах
dlehack 14 Опубликовано: 27 августа 2009 Рассказать Опубликовано: 27 августа 2009 (изменено) dlehack, как-то вы невнимательно читаете) Я же написал прийдётся пересчитывать все новости с их выборкой т.е. то, что вы и сделали. Но это не оптимальный вариант, поскольку - кто-то из админов отредактировал новость, кто-то из админов добавил новость, кто-то из модераторов удалил новость, кто-то из модераторов снял с публикации .... и т.д., и т.п.... и чтоже будет при 100К новостей? И всякий раз нужно будет обновить счётчик. Можно конечно обновлять раз в сутки по кэшу.. но это не интересно Так вот пока ещё никто не предложил действующего рационального варианта под указаную задачу Ну и в чем проблема. 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 Изменено 27 августа 2009 пользователем dlehack Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 27 августа 2009 Рассказать Опубликовано: 27 августа 2009 И зачем тратить лишние ресурсы на такие запросы? Можно сделать гораздо быстрее, просто придётся больше изменений вносить. Цитата Ссылка на сообщение Поделиться на других сайтах
dlehack 14 Опубликовано: 27 августа 2009 Рассказать Опубликовано: 27 августа 2009 (изменено) И зачем тратить лишние ресурсы на такие запросы? Можно сделать гораздо быстрее, просто придётся больше изменений вносить. Смысл если и так все работает и причем очень даже неплохо, любите изменения вносите, выкладывайте и заценим. Изменено 27 августа 2009 пользователем dlehack Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 27 августа 2009 Рассказать Опубликовано: 27 августа 2009 любите изменения вносите, выкладывайте и заценим я знал, что вы когда-нибудь это спросите, однако почитайте внимательно тему: я не нарывался на выкладывание своих решений, а лишь предложил vandamme выложить своё уникальное решение и объяснил, что "простая" задача может быть отнюдь не простой, в том числе и на вашем предложении. Я ведь не задавал вопрос, "как бы сделать, чтоб работало", а вы мне ответили Смысл если и так все работает Представьте себе, что я заказчик и не удовлетворён скоростью запроса 0,3с. и хочу либо вообще не иметь этот запрос, либо иметь его минимум с 10кратным повышением быстродействия. Ваши предложения? В частности интересует ответ vandamme Цитата Ссылка на сообщение Поделиться на других сайтах
dlehack 14 Опубликовано: 27 августа 2009 Рассказать Опубликовано: 27 августа 2009 любите изменения вносите, выкладывайте и заценим я знал, что вы когда-нибудь это спросите, однако почитайте внимательно тему: я не нарывался на выкладывание своих решений, а лишь предложил vandamme выложить своё уникальное решение и объяснил, что "простая" задача может быть отнюдь не простой, в том числе и на вашем предложении. Я ведь не задавал вопрос, "как бы сделать, чтоб работало", а вы мне ответили Смысл если и так все работает Представьте себе, что я заказчик и не удовлетворён скоростью запроса 0,3с. и хочу либо вообще не иметь этот запрос, либо иметь его минимум с 10кратным повышением быстродействия. Ваши предложения? В частности интересует ответ vandamme я так понял это топик для мечтателей просто поболтать помечтать о том как былобы хорошо не 0,3 а 0,03 ну вот пока вы сидите тут и мечтаете я буду пользоваться готовым решением а по поводу заказчика не ужто если вас попросят чтоб страница за 0.000000000000000000000000000000000000000000001 сек генерилась вы будете это делать (могу пожелать успехов и поменьше таких заказчиков) Цитата Ссылка на сообщение Поделиться на других сайтах
vandamme 0 Опубликовано: 27 августа 2009 Рассказать Опубликовано: 27 августа 2009 ну я вообще-то и имел в виду пересчет новостей, не потребуется отдельная таблица для создания записи о количестве новостей Цитата Ссылка на сообщение Поделиться на других сайтах
Al-x 7 Опубликовано: 27 августа 2009 Рассказать Опубликовано: 27 августа 2009 (изменено) я так понял это топик для мечтателей просто поболтать помечтать о том как былобы хорошо не 0,3 а 0,03 ну вот пока вы сидите тут и мечтаете я буду пользоваться готовым решением нет, почему мечтаем. Если нужно - можно сделать. Конечно не за бесплатно Тема о том, что не мешало бы вначале разобраться в обсуждаемом вопросе, а потом вставлять комментарии ну я вообще-то и имел в виду пересчет новостей, не потребуется отдельная таблица для создания записи о количестве новостей по большому счёту - это было бы самое высокое по скорости и самое низкое по ресурсам сервера - решение. Только потребовалось бы вносить изменения минимум в 5 файлов дле, т.е. везде, где идёт редактирование новостей для инкремента и декремента счётчиков. Если бы все форумы и движки работали по предлагаемым вами принципам подсчёта, то хостеры бы свихнулись (или тарифы были бы в 10 раз выше). А что-то придумывать тут и не нужно - тема стара как мамонт. Опять же - зачем предлагать сомнительные решения хаков на 4dle, если имеет смысл просто посмотреть как это сделано в провереных годами движках форумов (где тема счётчиков очень актуальна, т.к. они не только показывают информацию, но и являются функциональной частью скрипта, от которой зависит его работа). Изменено 27 августа 2009 пользователем Al-x Цитата Ссылка на сообщение Поделиться на других сайтах
dlehack 14 Опубликовано: 27 августа 2009 Рассказать Опубликовано: 27 августа 2009 нет, почему мечтаем. Если нужно - можно сделать. Конечно не за бесплатно Тема о том, что не мешало бы вначале разобраться в обсуждаемом вопросе, а потом вставлять комментарии не мне не нужно у меня все есть Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.