Очень долго воевал со своим форумом сегодня из-за того, что он сильно вешал пустой сервак. Запросы к БД иногда занимали 1-2 сек, долго не мог понять почему, пока не включил дебаг с отображением всех запросов. Включил и охренел. На каждой странице форум отправлял БД запрос на обновление кеша форумов forum_cache в таблицу ibf_cache_store. Скопировал ради интереса весь запрос в блокнот и сохранил как файл - получилось около 200кб! Тут у меня волосы встали дыбом . Открыл ipsclass.php, начал выяснять, почему такая свистопляска происходит. Трейсил, трейсил, в итоге пришел к тому, что в нормальных условиях запрос на обновление этого кеша должен отправляться либо в случаях обновления форумов, либо если при инициализации init_load_cache() по каким-то причинам не загрузила forum_cache. И действительно - все остальные кеши загружала, а этот - нет. Начал выяснять, почему не загружает. Потратил на это 2 часа. В итоге всё оказалось до боли глупо и просто - при обновлении этого кеша в БД данные заносятся в виде сериализованого массива, но так как структура форума у меня большая, то строка с сериализованым массивом вышла аж на 180кб и не влезала она элементарно в поле cs_value типа MEDIUMTEXT, вследствие чего часть строки херилась и собрать эту строку обратно в массив движок форума уже не мог, по-этому и не загружал forum_cache. Решение было очевидно - проапгрейдил поле cs_value в таблице ibf_cache_store до LONGTEXT и всё заработало. Теперь время выполнения запросов к БД занимает не более 0.2 - 0.3 секунды.
Вот так вот, господа. И ведь в другой раз не обратишь внимания... а тут такие страсти.
Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.
Вопрос
2rough4u
Очень долго воевал со своим форумом сегодня из-за того, что он сильно вешал пустой сервак. Запросы к БД иногда занимали 1-2 сек, долго не мог понять почему, пока не включил дебаг с отображением всех запросов. Включил и охренел. На каждой странице форум отправлял БД запрос на обновление кеша форумов forum_cache в таблицу ibf_cache_store. Скопировал ради интереса весь запрос в блокнот и сохранил как файл - получилось около 200кб! Тут у меня волосы встали дыбом
. Открыл ipsclass.php, начал выяснять, почему такая свистопляска происходит. Трейсил, трейсил, в итоге пришел к тому, что в нормальных условиях запрос на обновление этого кеша должен отправляться либо в случаях обновления форумов, либо если при инициализации init_load_cache() по каким-то причинам не загрузила forum_cache. И действительно - все остальные кеши загружала, а этот - нет. Начал выяснять, почему не загружает. Потратил на это 2 часа. В итоге всё оказалось до боли глупо и просто - при обновлении этого кеша в БД данные заносятся в виде сериализованого массива, но так как структура форума у меня большая, то строка с сериализованым массивом вышла аж на 180кб и не влезала она элементарно в поле cs_value типа MEDIUMTEXT, вследствие чего часть строки херилась и собрать эту строку обратно в массив движок форума уже не мог, по-этому и не загружал forum_cache. Решение было очевидно - проапгрейдил поле cs_value в таблице ibf_cache_store до LONGTEXT и всё заработало. Теперь время выполнения запросов к БД занимает не более 0.2 - 0.3 секунды.
Вот так вот, господа. И ведь в другой раз не обратишь внимания... а тут такие страсти.
Изменено пользователем 2rough4uСсылка на комментарий
Поделиться на других сайтах
8 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.