Задать вопрос
@hunter_outlaw

Массив категорий PHP. Каким будет быстродействие и нагрузка?

Здравствуйте.
Есть таблица категорий. Эти самые категории используются с проекте в разных целях:
1. Вывод категорий и подкатегорий в качестве меню навигации
2. Вывод дерева категорий списка публикаций или публикации отдельно
3. и много много разных мелких назначений, необходимых для гибкой структуры сайта.

Для удобного использования и данных категорий, создал массив этих самых категорий, который позволяет в нужном месте получить данные категории и подкатегории, имея тот или иной параметр (ID категории, alt_name или ID родителя).
$sql_result = $db->query('SELECT * FROM w_blog_category ORDER BY position ASC');
    while($categories = $db->get_row($sql_result)){
        $cat_name_array[$categories['alt_name']] = $categories;
        $cat_parent_array[$categories['parentid']] = $categories;
        $cats_array[$categories['id']] = $categories;
    }
    $db->free();


Все это прекрасно работает, но ведь каждый раз обращаться в БД для построения такого рода массива - большая нагрузка на БД. Соответственно, массив можно сохранять в кэше и вызывать данные из файла, вместо БД.
Но из-за недостатка практических знаний в данной отрасли, возник вопрос: как будет работать эта схема и как она отразиться на производительности проекта, если категорий будет очень много? Одно дело, если категорий штук 100. А если их более тысячи? Например, реализация структуры областей/городов/поселков таким образом...

Сильно ли повлияет на производительность системы, если использовать такие массивы? Заранее благодарю за ответы.
  • Вопрос задан
  • 229 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@IceJOKER
Web/Android developer
Простой ответ - в зависимости от нагруженности вы можете закешировать данные на несколько минут(тоже в зависимости от частоты обновления), даже если на 1 минуту закешируете, то это даст большие преимущества на крупных проектах(если к примеру два пользователя одновременно зайду, то данные придется достать для обеих, а если для первого закешировать на минуту, то второму достанутся данные из кеша).

А если у вас небольшой проект с небольшой посещаемостью, то не парьтесь
Ответ написан
Комментировать
@hunter_outlaw Автор вопроса
С временем кэширования проблем нет. Тут вопрос в времени обработки самого файла с массивом, если сам массив будет довольно объемным.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы