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