В веб-приложении многие процессы jQuery + Ajax + PHP не работают параллельно в одном и том же клиенте

В веб-приложении, взаимодействующем с одним сервером, существует вызов jQuery Ajax со сценарием PHP, выполнение которого занимает около 20 секунд.

$(document).ready(function() {
$.ajax({
type: 'POST',
dataType: 'json',
url: 'createPDF.php',
data: str,
success: function(response) {
showPDF(response);
}
error: function() {
console.log('ERROR WHEN CREATING PDF');
}
});
});

Тем временем пользователь просит приложение получить список (getList.php) через другой jQuery Ajax, независимый от createPdf.

$(document).ready(function() {
$.ajax({
type: 'POST',
dataType: 'json',
url: 'getList.php',
data: str,
success: function(response) {
showList(response);
}
error: function() {
console.log('ERROR WHEN GETTING LIST');
}
});
});

Проблема в том, что getList.php начинает выполняться только после завершения createPDF.php.

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

В этом случае, как запустить оба запроса параллельно?

Спасибо

-1

Решение

В основном происходит то, что на вашем сервере файл сеанса блокируется первым скриптом, например, saveFiles, После того, как этот скрипт завершил свою задачу, сеанс снова разблокируется. К сожалению ваш скрипт getList хочет получить доступ к тому же сеансу, так как он заблокирован, getList придется подождать, пока он не будет разблокирован.

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

Для более подробного объяснения взгляните на https://stackoverflow.com/a/6933294/2442804

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]