Я использую cakephp и jquery, и ajax запрашивает данные mysql при выборе новой компании. Когда пользователь выбирает новую компанию до завершения загрузки старой компании, он прерывает запрос и создает новую. Проблема в том, что он оставляет соединение mysql открытым (долгое время, может быть, час). Я использую непостоянную версию MySQL Connect. Когда пользователь удерживает клавишу со стрелкой вниз для прокрутки компаний в множественном выборе, он открывает сотни соединений в течение нескольких секунд, а затем все имеет ошибки «слишком много соединений».
Вот мой javascript, когда компания меняется
if ($.companiesDivXHR) {$.companiesDivXHR.abort(); }
$.companiesDivXHR = $.ajax({
url:"/companies/details",
success:function(html) {
$("companiesDiv").html(html);
}
});
Другой пример может помочь: у меня похожая ситуация, когда у меня есть запрос ajax каждые 10 секунд, и он прерывается, если он еще не завершен. Когда запрашиваемая страница занимает приблизительно 30 секунд, она прерывается каждый раз, прежде чем ее можно отобразить (начиная с 30> 10), и снова соединение mysql остается открытым. Когда запрашиваемая страница ajax загружается сама по себе, проблем не возникает, и соединение закрывается, как и должно быть. Таким образом, эффект намного медленнее, но для одного пользователя в течение 20 минут он снова вызывает ошибку «слишком много подключений» (если максимальное количество подключений установлено на 100).