предотвращение множественных одновременных запросов с помощью php / mysql live search - PullRequest
0 голосов
/ 04 августа 2011

У меня есть работающая система поиска в реальном времени, которая в целом работает очень хорошо. Однако часто возникает проблема, заключающаяся в том, что многие версии поискового запроса на сервере выполняются одновременно, если пользователи печатают быстрее, чем могут быть возвращены результаты.

Я отменяю ajax-запрос при получении нового, но это, конечно, не влияет на запрос, уже обрабатываемый на сервере, и вы в конечном итоге сталкиваетесь с серьезным узким местом и долгим ожиданием получения окончательных результатов. Я использую MySQL с таблицами MyISAM для этого, и, похоже, нет никакого преимущества в преобразовании в InnoDB, поскольку результирующие наборы будут вменяемыми строками.

Я пытался использовать переменную сеанса, чтобы заставить php ждать, если в этом сеансе уже выполняется запрос, но, похоже, это останавливает его работу.

Проблема будет решена, если я сделаю запросы ajax синхронными, но это скорее победит объект здесь.

Мне было интересно, есть ли у кого-нибудь какие-либо предложения относительно того, как сделать это правильно.

С наилучшими пожеланиями John

1 Ответ

2 голосов
/ 04 августа 2011

Прежде чем делать что-то более сложное, рассматривали ли вы вопрос об отправке запроса до тех пор, пока пользователь не перестанет набирать текст по крайней мере в течение определенного промежутка времени (скажем, 1 секунда)? Это должно значительно сократить количество запросов, сделанных без особых усилий с вашей стороны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...