Alexander.3 Posted March 6, 2014 Share Posted March 6, 2014 (edited) Всем привет, я хочу получить данные из бд, например:и вставить это через шаблон например:{$author['shoutbox_shouts']} Но я не хочу создавать хуки, мне очень интересно как это работает и я хочу сделать это через сам движок/форум. Очень хотелось бы поговорить на эту тему. Edited March 6, 2014 by Alexander.3 Link to comment Share on other sites More sharing options...
siv1987 Posted March 6, 2014 Share Posted March 6, 2014 В первую очередь, прежде чем получать какие-то данные из бд, вы должны помнить одну вещь - запросы к бд требуют дополнительных накладных расходов. Чем их больше, тем больше времени отнимают на генерацию страницы. Да, один запрос выполнится быстро, и десять тоже, но в один момент с подходом "я хочу это, хочу то" можете оказаться с кучей запросов которые влияют на производительность форума. Поэтому прежде всего следует думать об их оптимальности, добавить запросы дело нехитрое. Многие данные уже изначально грузятся форумом, поэтому их уже можно получить без доп запросов. Для начало следует определится что конкретно нужно, откуда и для кого, потом посмотреть а не загружены уже эти данные ядром форума. и вставить это через шаблон например"Напримерами" здесь лучше не пользоваться, потому что в разных местах грузятся разные данные. Где-то и без запросов можно обойтись, а для кого-то конкретного шаблона нужно править какой-то конкретный файл. Что касается сабжа, выглядит это примерно так - находите место где компилируется нужный вам шаблон, делаете запрос/необходимую обработку данных и отправляете их вместе с остальными присоединяя к существующему массиву данных. В некоторых случаях можно просто расширить уже имеющиеся запросы, добавив еще один джоин со своей таблицы. 1 Link to comment Share on other sites More sharing options...
Alexander.3 Posted March 6, 2014 Author Share Posted March 6, 2014 Нагрузка это дело понятное, для начала я просто хочу понять как это работает. Проще говоря - интересно узнать где вообще все это происходит, а потом уже когда хоть что нить получиться, буду переделывать. Сейчас мне нету смысла думать об оптимизации если я даже не знаю простые пути... Сегодня например полностью пересмотрел ipsMember.php. Но так и не понял откуда беруться запросы от posts.Например:$member['LevelPosts'] = $v['POSTS'];В шаблоне отлично работает, но тут же с регистром написан POSTS ( это максимальное сообщение по звездочкам )А тут написано без регистра, но все же не понятно - почему же он берет именно сообщения... хм... В самом исходнике только регистрация есть на поиск по айпи для сообщений..$member['posts'] Link to comment Share on other sites More sharing options...
Zero108 Posted March 6, 2014 Share Posted March 6, 2014 (edited) В первую очередь, прежде чем получать какието данные из бд, вы должны поменять одну вещь - запросы к бд требуют дополнительных накладных расходов. Чем их больше, тем больше времени отнимают на генерацию страницы. Один человек говорил, что картинки нужно ужимать по качеству примерно на 30-40 процентов перед выкладыванием их на страницу сайта. Было это в 2003-2004 гг. Сейчас уже можно не ужимать. Скорость у пользователей в большинстве своем хорошая. Я помню свой первый компьютер в 1995 году под виндой 95 и с винтом 100 мегабайт. Тогда это было много. Сейчас у меня два винта по 3 ТБ, и я не знаю, что на них записывать. Места больше, чем мне в данный момент нужно. До серверов пока эта тема не дошла. Хостеры держат пока высокую цену на хорошее железо, а само железо пока не настолько мощное, чтобы не задумываться о таких мелочах, как пара десятков "лишних" запросов к базе данных. Но, это пока.. Edited March 6, 2014 by Zero108 Link to comment Share on other sites More sharing options...
siv1987 Posted March 6, 2014 Share Posted March 6, 2014 Zero108, идею вашу я понял, но с ростом ресурсов растут и требования приложений к ним. Раньше винда весила 250мб, сейчас 7гб+. Об оптимизации все равно нужно думать, особенно в случае с бд, которая зачастую является слабом местом ресурса. Проще говоря - интересно узнать где вообще все это происходитТС, "это" - понятие относительное. Вас что конкретно интересует? Каждое событие происходит в определенном месте. Но так и не понял откуда берутся запросы от postsОт какого posts? ipsMember служит для загрузки данных пользователя и его обработки - создания, удаления и тд. 1 Link to comment Share on other sites More sharing options...
Alexander.3 Posted March 6, 2014 Author Share Posted March 6, 2014 (edited) Хочу по примеру "Всего сообщений" ( posts ) сделай собственый аналог для другой таблички, стропы...Целый день мучал форум =)) Таковы были шаги:Открыл шаблон, начал с панели профиля. Там увидел что используется макрос 'posts', решил пробить в файлах фтп. По интуиции набрел на ipsMember...В итоге начал копать этот скрипт... Распишите пожалуйста какие файлы хотя бы нужно копать, там дальше сам буду мучать и крушить двиг ))) мне просто это интересно, как это все устроено, давно не получал такого вдохновения =)) Однако это сложно, так устал переписывать один и тот же скрипт... но что то я явно не то делаю, голова совсем уже не думает к вечеру, извините если как то не понятно пишу.. Edited March 6, 2014 by Alexander.3 Link to comment Share on other sites More sharing options...
siv1987 Posted March 6, 2014 Share Posted March 6, 2014 Хочу по примеру "Всего сообщений" ( posts ) Количество сообщений пользователя это поле-счетчик в таблице members. Высчитывать каждый раз его сообщения было бы слишком накладно. собственый аналог для другой таблички, стропы.Что такое "стропы"? 1 Link to comment Share on other sites More sharing options...
Alexander.3 Posted March 6, 2014 Author Share Posted March 6, 2014 Количество сообщений пользователя это поле-счетчик в таблице members. Высчитывать каждый раз его сообщения было бы слишком накладно.Да, да, именно. Я хочу сделать аналог. ( Скриншот выложен в первом постпе. ) Он тоже в этой таблице, по этому я решил что это будет проще. Что такое "стропы"? Поле в таблице ( показано на скриншоте в первом сообщении ) --Это поле находиться в таблице members ( где и берется запрос с кол-вом сообщений ) Link to comment Share on other sites More sharing options...
siv1987 Posted March 6, 2014 Share Posted March 6, 2014 Да, да, именно. Я хочу сделать аналог.Аналог чего? Из members грузятся все данные, так что дополнительных запросов не нужно, ну или переделать существующий. Link to comment Share on other sites More sharing options...
Alexander.3 Posted March 6, 2014 Author Share Posted March 6, 2014 Хорошо, тогда задама вопрос так: Я хочу переделать текущий запрос, где мне его можно откопать? С какого файла? --В будущем если получиться, то хочу создать доп.поле и с него брать кол-во для личных потребностей ) но до этого еще явно рановато. Link to comment Share on other sites More sharing options...
siv1987 Posted March 6, 2014 Share Posted March 6, 2014 Я хочу переделать текущий запрос, где мне его можно откопать? С какого файла?"Я хочу купить машину, сколько она будет стоить?"Конкретнее, какой запрос? Их там до 15, и еще зависит на какой странице - главная, форумы, темы и тд. Хорошо, тогда задама вопрос так:Лучше объясните что вы хотите сделать. Без абстракций, конкретно что и куда вывести, в каком шаблоне. Немного не понимая суть темы, вы и других людей вводите в заблуждения. Если поле находится в таблице members, можно попробовать получить доступ используя ее имя. Если не получается, пишем в каком месте не работает, и как к ней обращаетесь. 1 Link to comment Share on other sites More sharing options...
Alexander.3 Posted March 7, 2014 Author Share Posted March 7, 2014 (edited) "Я хочу купить машину, сколько она будет стоить?"Конкретнее, какой запрос? Их там до 15, и еще зависит на какой странице - главная, форумы, темы и тд. Не знал, спасибо. Лучше объясните что вы хотите сделать. Без абстракций, конкретно что и куда вывести, в каком шаблоне. Немного не понимая суть темы, вы и других людей вводите в заблуждения. Если поле находится в таблице members, можно попробовать получить доступ используя ее имя. Если не получается, пишем в каком месте не работает, и как к ней обращаетесь. Хорошо, сейчас объясню что хочу сделать даже в картинках =)-При просмотре темы, в мини профиле сбоку я хочу добавить собственный счетчик из бдВот сюда:Где написано черным шрифтом, это то что я хочу добавить, где написан N, это данные которые я хочу взять из бд.Сам счетчик я хочу взять из таблицы members которая находиться тут:(Красным выделена таблица, зеленым то - что я хочу указать где N в первом скринщоте )Я даже не прошу написать код за меня, мне просто скажите где и с чего начинать :) Алгоритм или не большую последовательность. Извините что ввел Вас в заблуждение, ничего не понятно же :) Edited March 7, 2014 by Alexander.3 Link to comment Share on other sites More sharing options...
Alexander.3 Posted March 7, 2014 Author Share Posted March 7, 2014 Немножко подумал и дальше покопав исходники, вроде что то дошло :) Теперь интересно как это все сконструировать бы. Вставляю в шаблон:{$this->memberData['shoutbox_shouts']} Результат: Выводит то что нужно, но только от моего вида ко всем сообщениям, значит я так понимаю memberData это индекс того кто просматривает форум, то есть будет отображать его значения. Попробовал вписать в ipbMember$member['testers'] = $member['member_id']['shoutbox_shouts'];в шаблоне прописал:{$author['testers']}Стали появляться какие то не понятные данные )) думаем дальше..) Link to comment Share on other sites More sharing options...
siv1987 Posted March 7, 2014 Share Posted March 7, 2014 {$this->memberData['shoutbox_shouts']}$this->memberData - массив текущего пользователя. в шаблоне прописал: {$author['shoutbox_shouts']} разве не доступен? Если нет: Открыть /admin/applications/forums/modules_public/forums/topics.phpНайти $_extraMember = ( is_array($dataHook['members']) && count($dataHook['members']) ) ? ',m.'.implode(',m.', $dataHook['members']) : ''; Ниже добавить $_extraMember .= ',m.shoutbox_shouts'; Сам запрос с перечнями полей находится чуть ниже.В ipsMember менять ничего не нужно. Link to comment Share on other sites More sharing options...
Alexander.3 Posted March 7, 2014 Author Share Posted March 7, 2014 Ооо оно заработало! Я даже прослезился, я с утра мучал этот форум Сейчас чуть отойду и буду думать как это произошло, что оно заработало )) теперь вопрос, можно ли не в переменную занести эту строчку? а ниже в запрос например? Хотя сейчас сам попробую. В любом случае большое спасибо, этот файл где редактируются топик /admin/applications/forums/modules_public/forums/topics.php я и хотел узнать изнчально. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now