Почему второй независимый ответ ajax ждет, пока его не получат до первого ответа ajax? - PullRequest
0 голосов
/ 08 мая 2018

Я использую codeigniter.Ниже представлен мой AJAX-код -

jQuery(document).ready(function () {
    $.ajax({
         type:'post',
         data:'',
         url:HOST+'/exp1',
         success:function(data)
         {
             alert('here1')
         }
    });

    setInterval(function(){
         $.ajax({
              type:'post',
              data:'',
              url:HOST+'/exp2',
              success:function(data)
              {
                   alert(data)
              }
         });
    }, 1000);
});

И код контроллера -

function exp1()
{
    sleep(10);
}

function exp2()
{
    echo 'test';
}

Выше оба вызова Ajax независимы, но на одном контроллере.Первый ajax получает ответ в течение 10 секунд, а второй ajax получает ответ в течение 1 секунды.

Второй запрос ajax запускается через каждую 1 секунду.

Но когда я выполняю код, яне получил ответ от второго ajax до тех пор, пока не будет получен первый ответ ajax.

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

1 Ответ

0 голосов
/ 08 мая 2018

Проблема блокировки сеанса.

В exp1 () - вызов session_write_close () перед sleep (10) должен предотвратить задержку при других одновременных запросах страниц.

"По умолчанию PHP записывает данные своего сеанса в файл. Когда вы инициируете сеанс с помощью session_start (), он открывает файл для записи и блокирует его, чтобы предотвратить одновременное редактирование."

Два одновременных AJAX-запроса не будут выполняться параллельно

"Короче говоря, звоните session_write_close () , когда вам больше не нужно ничего делать с переменными сеанса."

https://www.codeigniter.com/user_guide/libraries/sessions.html#a-note-about-concurrency

...