![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Predator199 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 412 Регистрация: 1.2.2012 Репутация: -3 Всего: -4 |
Есть 20 гл категорий, знаю их id.
Беру цикл, в цикле делаю обращение к рекурсии на выборку всех id(суб категорий). В итоге у меня получается 600 категорий(id), после чего делаю выборку новостей из бд. На все это уходит 07 сек. Подскажите пжл, как сделать, чтоб быстрей. Минимум времени затрачивалось на весь сбор ид ит.. |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
ты код сначала покажи
-------------------- Amazing |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Видимо ты делаешь запросы внутри рекурсивной функуции? Лучше собирать в массив найденные IDшники, а затем скопом в одном запросе выбрать where id in(?).
|
|||
|
||||
| Predator199 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 412 Регистрация: 1.2.2012 Репутация: -3 Всего: -4 |
Сам я не понял как составить рекурсию на выборку всех id расположенных глубже. На примере сделал вот такую:
С начало делаю запрос, ориентируюсь по alt имени категории. Дальше через цикл, вытаскиваю id(к примеру вышло 10 гл категорий , знаю их ид). В этом же цикле делаю обращение к функции, вытаскиваю все ид расположенных категорий глубже. После того как вытащил и сложил все ид, убрал запятую с последнего результат. Дальше еще один запрос но в запрос уже подставляю все собранные id. И получается вополнение скрипта 0.06-0.08 сек. Без всего этого сбора 0.004. Вот как можно было бы проще сделать весь процесс? Так чтоб уложиться в 0.01(мах) Это сообщение отредактировал(а) Predator199 - 11.2.2013, 18:43 |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Зачем? implode() |
|||
|
||||
| Predator199 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 412 Регистрация: 1.2.2012 Репутация: -3 Всего: -4 |
Не совсем понял. Я же не массив получаю от рекурсии,а сразу прибавляю и получаю к примеру: "234,234,2,". Через rtrim, запятую убираю с конца.
Даже если убрать rtrim, разницы во времени не будит. Может можно попроще рекурсию сделать, я вот думал да не понял. Как забрать id, которые расположены глубже. Вот чтоб подняться и собрать-это можно. Кэшировать каждую страницу- не выход. Выход или другой способ есть, просто я его не знаю и написал как щас себе представляю. Это сообщение отредактировал(а) Predator199 - 11.2.2013, 19:11 |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Любую рекурсию можно превратить в цикл. И тут даже не столько дело во времени, чем в эстетике. Конкатенировать, обрезать - это костыли, ну имхо. А push`ить массив, а потом его implode`ить - это адекватнее.
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |