LEOnidUKG

LEOnidUKG
Рейтинг
1784
Регистрация
25.11.2006
Должность
PHP
Интересы
Программирование

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

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

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, чтобы максимально эффективно впоследствии втюхать рекламу.

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

У меня такое ощущение, что этот вебмастер кабинет делает 1 человек в свободное от работы время.

И когда он доделает никому не известно. И доделают ли вообще, тоже вопрос.

Я так понимаю это для совместимости. Если одновременно ставить и гугл и яндекс.

Killer:
Я не знаю как по вашему работает суперфетч, но вот что происходит в реальности.
Вообще суперфетч нужен чтобы быстрее загружались часто используемые приложения и службы. всё.
Под это дело она жрёт свободную оперативку. Когда 1с сжирает много оперативы суперфетч последовательно освобождает место под эту самую 1с потихоньку выгружая всё что можно пока не освободит всю память. И если 1с жрёт больше чем у вас есть, суперфетч тут ни при чём.

Вы тоже не знаете как она в реальности работает т.к. не является разработчиком этой функции.

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

Суперфетч под СЕБЯ выгружает память начинает. В этом проблема и не даёт её 1с.

Да берут. Но у него должна быть функция по раскрытию блога иначе по стуку могут атататата сделать.

Всего: 31599