2009-12-26 3 views
2

На моем ноутбуке у меня есть приложение, которое делает 7 запросов AJAX GET одному сценарию PHP примерно в одно и то же время (разность в миллисекундах). Они все возвращаются успешно с результатом, который я хочу.Запросы AJAX зависают, когда они отправляются в быстрой последовательности

Затем я переместил этот сценарий на сервер (Windows Server) с Apache и PHP. Однако этот процесс зависает, когда я делаю те же 7 запросов AJAX. Однако, если я сделаю каждый запрос индивидуально, тогда все они вернутся успешно! Что-то не хочет, чтобы я делал все 7.

Почему это происходит? Какие переменные конфигурации в PHP.ini и httpd.conf я могу найти, чтобы определить, что это?

Благодаря

+1

не ответ на ваш вопрос, но зачем посылать 7 запросов в то же время ? Не могли бы вы сгруппировать их только в одну, которая вернула бы всю необходимую информацию? (В тот день, когда у вас много пользователей, это будет намного лучше для вашего сервера) –

+0

Очень хороший вопрос. –

+0

Отправленный запрос сильно зависит от пользователя и являются случайными, я не могу это изменить. – Abs

ответ

5

Я думаю, что проблема может быть на стороне браузера.

Большинство браузеров имеют ограничение на 2 одновременных соединения при разговоре с одним и тем же сервером.

При перемещении приложения на сервер дополнительная латентность может перекрывать ваши запросы AJAX, которые на локальном хосте были быстро отправлены.

Вы можете проверить эти похожие статьи:

+0

Интересно, я не знал об этом. +1 –

+0

Очень интересно, я тоже об этом не знал! – Abs

+1

Он также написан в спецификации HTTP, раздел 8.14, последний абзац: http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html –

1

Сервер может быть throttler на месте, чтобы держать излишние запросы от приходить слишком быстро.

1

Возможно, ваша конфигурация Apache ограничивает количество одновременных соединений с одного и того же IP-адреса или даже с Windows. Какая версия Windows? Какая установка Apache, автономная или как часть XAMPP?

+0

Ноутбук = Windows XP, а другой компьютер = Windows Server 2003. Может быть, из-за «KeepAliveTimeout: количество секунд, чтобы ждать следующего запроса от одного и того же клиента в том же соединении». - или это немного отличается? – Abs

+0

Ноутбук = WAMP и другие Machine = Standalone (apache и PHP). PHP используется как модуль. – Abs

+0

Звучит неплохо, попробуйте поиграть с этим. Это приведет к тому, что 7 соединений будут обрабатываться один за другим, а не одновременно. –