Эка занесло...
Да. Глупо. Но я только сейчас узнал, что кроме $_REQUEST есть $_GLOBALS
Счас, младший поплавает в бассейне, я до клавы доберусь. Уничтожу еще пару сотен тараканов.
Да, но я могу предположить, что в PHP это сделается быстрее т.к. он заточен на такие задачи. А вот всё это вычислять в MySQL и на постоянную основу, я бы не рекомендовал.
Вижу уже тупость в своем варианте. И потом это функция, она вызывается дохренеллион раз. Решил пихну-ка я в сессию список верхних разделов, их всего-то от трех до шести...
Так, придумал версию 2 с определением уровня каталога... Вернусь - буду испытывать
function level($id) { $array_top = mysql_query("SELECT id FROM `content` WHERE id_parent='0'"); $array_top = mysql_fetch_array($array_top); if (in_array($id,$array_top)) { $level = 1; } else { $level = 0; while ($id > 0) { $result = mysql_query("SELECT id,id_parent FROM `content` WHERE id='$id'"); $myrow = mysql_fetch_array($result); $id_parent = $myrow["id_parent"]; $level = $level+1; $id = $id_parent; } } echo "<script>console.log('Level result: " . $level . "//n');</script>"; return $level;}
А, это... Да, у меня все строго. Только числа, причем нельзя даже + вставить, а то плодить яндекс стал дубли, так как изначально ЦМС проглатывала.
Вообще умерла.
Я в итоге поставил Alma Linux 8 (потому что 9 не поддерживается FastPanel-ью)
Разница в одну. Да и все равно я прибил свою правку. Она поломала местами сайт, ибо блин я не учел, что сразу под 0 у меня не только блин 1, а еще пяток. Запихивать их в array это костылькостыльный, так как на разных сайтах (ЦМС обслуживает 7 доменов) чуть рознятся... Чешу репу...
Зато походу оптимизировал еще несколько сотен запросов - обнаружил что рекламные блоки опрашиваются всегда все возможные (32 шт), тогда как показываются все 4-5. Сделал лишний запрос на проверку количества не скрытых - получил минус 300 запросов.
Хде и как?
Это я сразу понял! Но тут не обойтись тремя строчками кода, дофига всего переделывать...
Ты не прав. Выше я написал, почему.
Там вот и все:
function level($id) {$level = 1; while ($id > 1) { $result = mysql_query("SELECT id,id_parent FROM `content` WHERE id='$id'"); $myrow = mysql_fetch_array($result); $id_parent = $myrow["id_parent"]; $level = $level + 1; $id = $id_parent; } return $level;}
Это уже мной подкрученная. Была
function level($id) { $i = 0; while ($id > 0) { $result = mysql_query("SELECT id,id_parent FROM `content` WHERE id='$id'"); $myrow = mysql_fetch_array($result); $id_parent = $myrow["id_parent"]; $i = $i+1; $id = $id_parent; $level = $i; } return $level;}
Вот вам результат работы этого компонента:
muzslava #:П.С. Программист говорит, что для мета-тегов мы применяем спец. компонент, который должен выдавать правильные данные для поисковиков. Получается этот компонент работает некорректно или как?
... как дети, право слово... А что вы ожидаете он вам скажет? Правду? Что "да, я профнепригоден, сделал херню, вот ваши деньги назад и наймите другого"? Это не в нашей вселенной, вам в параллельную.
Резюме другого вы нигде не получите: сайт говно, переделывать полностью. И тогда будет счастье. Через боль, но потеря денег - разве это боль? Это расходы.
Конечно. Вам же говорят тут всякие люди - ПЕРЕПИСЫВАТЬ САЙТ. Или - забить и башлять втрое за рекламу.
Не вы первые - не вы последние пали жертвами инфоцыган. "Я вам такой сайт напишу - закачаетесь, все по последней моде и слову техники. Жава, ноде, искусственный интеллект. Деньги на карту шлите." А на практике - фрилансер за 10 000р слабал бы на бесплатном шаблоне WP и это было бы гораздо лучше чем сейчас, по крайней мере - для старта.
Убейте что есть, просто в помойку. И наймите студента - пусть на ВП сделает быстро и дешево.
Вы же зарабатывать на сайте хотите? Ну вот расходы просто возрасли.
Итак, первый успех. Обратил внимание, что при построении иерархии меню (их два, одно правда кешируется) цикл с запросом в БД пробегает даже если ИД раздела =1, то есть верхний уровень... Сменил начальный счетчик в функции с 0 на 1, и в if $1>0 => $i>1. Одним махом убрал 200 запросов, то есть на 15% полегчало...
вот теперь надо наблюдать... Вроде голову поломал, echo понавставлял - не должно поломать... Надеюсь.
функция 5 строк, $myrow["id"] нет там... Походу неподумав... Я на самом деле за программистом ужа находил подобное, как поумнел, но каждый раз сильно сомневаюсь - может это я дурак на самом деле... Но пока - нет.