JQuery AJAX несколько запросов - PullRequest
2 голосов
/ 10 января 2012

Я сделал длинный опрос как запрос в функции, использующей jQuery ajax, который будет выполняться постоянно.Был сделан еще один запрос на отправку данных в фоновый файл PHP, и этот второй запрос не является длинным опросом, он просто отправляет данные в этот файл PHP.

Проблема: я проверял в Firebug, что когда длинныйзапрос на опрос запущен, я не могу отправить другой запрос, пока выполняется длинный опрос.Как отправить еще один запрос, даже если запущен длинный опрос?

Примечание. Я использовал async: true в обоих.

другой вопрос: как мне убедиться, что дажефункция, которая содержит код запроса на длинный опрос, будет вызываться несколько раз, но запрос на длинный опрос будет выполнен только и только один?

Ответы [ 3 ]

5 голосов
/ 10 января 2012

Ваш php использует сеансовую аутентификацию? Ваша проблема может быть блокировка сеанса. Это может происходить в PHP, который безоговорочно использует session_start () в начале каждого запроса и иногда является поведением по умолчанию в среде MVC, даже если сеанс никогда не изменяется. Другие подозрительные случаи использования, если оба сценария зависят от того, вошли ли вы как администратор.

Если вы подозреваете, что это может иметь место, попробуйте стратегическое размещение session_write_close () в возможно более ранней точке после того, как вам больше не нужно будет изменять данные сеанса для ваших двух сценариев.

0 голосов
/ 31 августа 2018

Несколько запросов с Ajax, Jquery.

По умолчанию Jquery уже делает асинхронные запросы;однако проблема «постановки в очередь» не возникает в коде Javascript, если вы не используете опцию async: false;который, очевидно, будет блокировать браузер, пока запрос не будет прекращен.Кроме того, эта проблема может возникнуть по следующим причинам:

1 - Использование встроенного сервера PHP - При использовании этой функции PHP 5.5 ответы на запросы выполняются один за другим ната же машина, то есть на том же компьютере.Однако я рекомендую вам протестировать сценарии с использованием последней версии сервера XAMP;

2 - Использование сеансов - ответы на запросы в каждом сеансе представлены в очередях, а не впараллельно, однако, рекомендуется использовать session_write_close ;

3 - Непреднамеренная конфигурация опции MaxClients директивы в Apache - В случае первого и / иливторой вариант не встречается;третья наверняка, это проблема.Чтобы решить эту проблему, просто откройте файл httpd-npm и настройте параметр MaxClients (256) для нескольких запросов.В текущей версии Apche, если я не ошибаюсь, параметр MaxClients был заменен на MaxConnectionsPerChild .

Поэтому представленные параметры также зависят от представленных контекстов.Надеюсь, это поможет.

0 голосов
/ 10 января 2012

Вам необходимо использовать async : true (это значение по умолчанию).

Если вы говорите async : false, это означает, что он выполняет синхронный запрос, то есть он ожидает первогопросьба закончить, прежде чем делать что-нибудь еще.Вам нужен асинхронный запрос, чтобы браузер мог продолжать делать другие вещи, ожидая ответа от первого запроса.

(редко требуется async : false, и если выВы не уверены, нужно ли вам это, вы почти наверняка не будете.)

...