LEOnidUKG

LEOnidUKG
Рейтинг
1776
Регистрация
25.11.2006
Должность
PHP
Интересы
Программирование
Нажмите на ссылку сайта, прям со страницы выдачи результатов гугла.. и она откроется в этом же окне.

У вас устаревшая информация. В гугле уже давно открывается в новом окне.

ziliboba0213:
Простите, а кто такой Алаич? Я без намеков, честно - не знаю :)

Я тоже ХЗ кто это такой и чего это его какие-то модуля ставят в пример. Ну пусть делает на win1251. Его личное дело. Весь интернет уже давно живёт на utf-8

Все новые проекты исключительно utf-8.

win1251 только старые проекты.

Если вопрос в нескольких десятках/сотнях записей, тогда конечно, нет смысла насиловать мозг.

Об этом я и говорил, что тут нужно детали разбирать ТЗ.

Конечно если, как у Solmyr это базис всего, то конечно тут нужно подход более основательный.

Да обычная проверка.

Ещё гугл сразу же запрашивает вот такие урлы:

http://site.ru/m

http://site.ru/mobile

ХЗ зачем, но именно их он считает мобильной версией. Нарывается на 404 ошибку и может начаться котовасия.

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

Это уже теории.

Я лично тестировал свою функцию на сайте с комментариями под 500К и посещалкой более 75 000 в сутки. Это на футбольном сайте. Я пишу как делаю на практике и вещь, которая работает достаточно быстро.

Я привожу реальные примеры кода, которые работают. А не какие-то там join, где-то когда будут и как они там будут ХЗ. И сколько там родителей будет.

Я join вообще терпеть не могу, юзаю их очень редко т.к. они достаточно мощно грузят БД если объёмы данных большие.

Также я не думаю, что ТС-у нужно просматривать ВСЕХ сразу родительные и дочерние данные. 99%, что есть условия какие же родители нужно выбрать и там явно не 1 миллион записей.

LEOnidUKG, ок, у меня в таблице 8кк строк (элементов дерева) с глубиной в 7 уровней. Мне нужно получить всю иерархию от низшего элемента. Оптимально ли будет выбирать всю таблицу?

Смотря какой размер данных. Возможно вы храните вообще всю структуру в отдельной таблице и весит она там от силы 50 МБ.

Также можно выгружать из таблицы не все данные, а то только id и rootid.

И тут уже встаёт вопрос, кто быстрее это выполнит mysql или PHP?

Я больше ставлю на второго.

Фома:
Новая карта? Мне в Испанию тож старая приходила. А вот новая.

Всё понял вопрос. Значит в новой есть ограничения печально. Благо у меня до 2018, может быть ещё исправят.

Чтобы не нагружать БД я юзаю вот такую функцию в комментариях многоуровневых:

function build_hierarchy($arr, $id_key = 'id', $pid_key = 'parent_id') {

$structure = array();

while($elem = array_shift($arr)) {

if(isset($structure[ $elem[$id_key] ])) {

$elem['children'] = $structure[ $elem[$id_key] ];

unset($structure[ $elem[$id_key] ]);

} else

$elem['children'] = array();

if(isset($references[ $elem[$pid_key] ])) {

$references[ $elem[$pid_key] ]['children'][ $elem[$id_key] ] = $elem;

$references[ $elem[$id_key] ] =& $references[ $elem[$pid_key] ]['children'][ $elem[$id_key] ];

} else {

$structure[ $elem[$pid_key] ][ $elem[$id_key] ] = $elem;

$references[ $elem[$id_key] ] =& $structure[ $elem[$pid_key] ][ $elem[$id_key] ];

}

asort( $references );

}

return array($structure);

}

Все данные из запроса я закидываю в переменную:

$bigmass=fetchAll();//результат выгрузки из БД, обычный SELECT * where url='index'

и делаю разбор:

$bigmass=build_hierarchy($bigmass,'num','rootid'); //Название столбцов из вашей таблицы: num = id записи; rootid = указывает чья это запись;

далее сделав:

print_r($bigmass);

вы увидите как всё разложено по полочками и можете с этим работать.

При этом БД не напрягается вообще.

Владислав Железный:
Вовсе нет. Они таким образом связывают между собой идентификаторы посетителя в разных системах RTB, чтобы максимально эффективно впоследствии втюхать рекламу.

Прочитал ещё раз. Действительно, получается гугл им помогает.

Всего: 31516