У вас устаревшая информация. В гугле уже давно открывается в новом окне.
Я тоже ХЗ кто это такой и чего это его какие-то модуля ставят в пример. Ну пусть делает на win1251. Его личное дело. Весь интернет уже давно живёт на utf-8
Все новые проекты исключительно utf-8.
win1251 только старые проекты.
Об этом я и говорил, что тут нужно детали разбирать ТЗ.
Конечно если, как у Solmyr это базис всего, то конечно тут нужно подход более основательный.
Да обычная проверка.
Ещё гугл сразу же запрашивает вот такие урлы:
http://site.ru/m
http://site.ru/mobile
ХЗ зачем, но именно их он считает мобильной версией. Нарывается на 404 ошибку и может начаться котовасия.
Это уже теории.
Я лично тестировал свою функцию на сайте с комментариями под 500К и посещалкой более 75 000 в сутки. Это на футбольном сайте. Я пишу как делаю на практике и вещь, которая работает достаточно быстро.
Я привожу реальные примеры кода, которые работают. А не какие-то там join, где-то когда будут и как они там будут ХЗ. И сколько там родителей будет.
Я join вообще терпеть не могу, юзаю их очень редко т.к. они достаточно мощно грузят БД если объёмы данных большие.
Также я не думаю, что ТС-у нужно просматривать ВСЕХ сразу родительные и дочерние данные. 99%, что есть условия какие же родители нужно выбрать и там явно не 1 миллион записей.
Смотря какой размер данных. Возможно вы храните вообще всю структуру в отдельной таблице и весит она там от силы 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);
вы увидите как всё разложено по полочками и можете с этим работать.
При этом БД не напрягается вообще.
Прочитал ещё раз. Действительно, получается гугл им помогает.