Автор Тема: проблемы с запросами к MySQL  (Прочитано 3561 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
проблемы с запросами к MySQL
« : 23 Июля 2004, 21:40:37 »
Есть таблица DVD-дисков, в которой хранятся русское и английские названия, описание фильма (обычно список актёров) и ряд параметров типа цены, признака новинки и т.д (2253 строки общим размером 172408 кб, если верить show table status). К базе приделан скрипт на Перле, который прекрасно работает за одним исключением. Нужно было сделать поиск. Чтобы диск был выбран, каждое ключевое слово должно присутствовать либо в русском названии, либо в английском, либо в описании.

  Таким образом для поиска буквы «икс» будет следующий SQL-запрос select * from dvd where (rus_name like \'%x%\' OR eng_name like \'%x%\' OR descript like \'%x%\' ) LIMIT 100 OFFSET 0.

  Как видно, в любом случае скрипт выводит не более 100 совпадений. При небольшом количестве совпадений всё работает нормально. Если совпадений от 200 и выше, то скрипт напрочь зависает (страница с поиском даже не показывается, а остаётся предыдущая). Самое интересное, что если отменить открытие страницы с помощью Escape и кликнуть по какой-либо другой рабочей ссылке скрипта, скрипт всё равно в этом окне IE больше работать не будет.

  Повторю, скрипт по-любому выводит не более 100 совпадений, и если их всего 150, то он нормально даёт переключаться между страницей с 100 совпадениями (OFFSET 0 в запросе) и остальными 50 (OFFSET 100).

  Конечно, скрипт выводит данные о дисках в форматированном виде со всякими мелкими рисунками-заполнителями и прочем. Если сделать примитивный неформатированный вывод, то ничего не виснет. Но я не думаю, что дело в том, что какая-то запись БД конфликтует с функцией вывода, так как та же функция используется для вывода алфавитного каталога (просто меняем условие в WHERE), и там всё работает без проблем.

  Подозреваю, что это описание весьма туманно для вас, но хотя бы подскажите, куда надо «копать»: какой-нибудь вариант, из-за которого могут быть эти грабли.
  Если нужны дополнительные сведения, скажите – я напишу. А то с я этим уже за##ался. :insane:

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
проблемы с запросами к MySQL
« Ответ #1 : 23 Июля 2004, 22:36:49 »
для начала надо запросы проверять в консоли.
а пялиться в браузер, отлаживая sql-запрос, это то, же самое, что по телефону проводить нейрохирургическую операцию

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
проблемы с запросами к MySQL
« Ответ #2 : 23 Июля 2004, 22:57:23 »
Да, проверял я их в консоли - нормально всё!
Я же написал, что даже в браузере всё работает, если без форматирования выводить.
При этом работает и с форматированием, если строк менее ~200.

Блин, ну читайте внимательнее, пожалуйста!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
проблемы с запросами к MySQL
« Ответ #3 : 23 Июля 2004, 23:36:00 »
а при чем здесь mysql тогда?

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
проблемы с запросами к MySQL
« Ответ #4 : 23 Июля 2004, 23:49:47 »
Цитировать
RomikChef:
а при чем здесь mysql тогда?


Ты, правда, внимательно прочитал первое письмо? Что в нём непонятного?

p.s. Да, я понимаю, что вопрос выглядит по-ламерски. Но я действительно не понимаю, почему всё это вышеописанное имеет место быть (что именно - см.выше), поэтому и написал сюда.

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
проблемы с запросами к MySQL
« Ответ #5 : 23 Июля 2004, 23:54:45 »
Forza глянь в эррор лог.
Как выводит скрипт данные? по мере обработки? Или только в конце работы? Очень похоже на таймаут по выполнению скртипта. НО, если только скрипт в самом начале не выводит хттп заголовки, должна быть 500-ая ошбика.
Ну к чему все это, лучше бы водки выпили...

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
проблемы с запросами к MySQL
« Ответ #6 : 23 Июля 2004, 23:57:24 »
Forza, прекрати устраивать балаган, тем более что не прав. Если написаное тобой правда, то MySQL тут не причём
Ну к чему все это, лучше бы водки выпили...

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
проблемы с запросами к MySQL
« Ответ #7 : 24 Июля 2004, 00:54:11 »
Цитировать
glebushka:
Forza глянь в эррор лог.

Эррор лог Апача? Уже смотрел. Там нет вообще ничего касательно этого случая.
Цитировать
glebushka:
Как выводит скрипт данные? по мере обработки? Или только в конце работы? Очень похоже на таймаут по выполнению скртипта. НО, если только скрипт в самом начале не выводит хттп заголовки, должна быть 500-ая ошбика.

Никакую ошибку Апач не выдаёт. ИЕ по сути "зависает" на странице ввода условий поиска: в его статусбаре начинает расти "прямоугольник", как будто открывается новая страница, но на пол-пути навечно останавливается.
А обычно скрипт выдаёт данные в конце обработки: по ходу которой все формы, таблицы и т.д. записываются в одну переменную $page.

А что за таймаут? Где он настраивается?
Цитировать
glebushka:
Forza, прекрати устраивать балаган, тем более что не прав. Если написаное тобой правда, то MySQL тут не причём

Блин, да я понимаю, что не в нём дело!!!! Поэтому и написал свой вопрос в форум Perl, а не Базы Данных.
Но ошибка-то получается именно при вполне определённом обращении к MySQL и последующей обработке результатов.

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
проблемы с запросами к MySQL
« Ответ #8 : 24 Июля 2004, 15:26:56 »
Цитировать
Forza:
А что за таймаут? Где он настраивается?

Он настравивается хостером. Чтобы не перегружать сервер.

В самом начале скрипта выводи хттп заголовки, вставь printы в ключевые участки кода, и разберись в на каком этапе скрипт вырубается.
Ну к чему все это, лучше бы водки выпили...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28