AJAX (прототип/php), запускающий 2 процесса ajax, зависает до тех пор, пока не завершится первый
-
03-07-2019 - |
Вопрос
Этот вопрос является продолжением моего предыдущего: Предыдущие вопросы.
Поэтому я настроил свою страницу для инициирования вызова ajax для начала обработки некоторых записей.И после каждой записи обновляет строку в другой таблице, чтобы отслеживать статус этого процесса.После того, как будет сделан первый вызов ajax, у меня начнется еще один запуск.Это Ajax.PeriodicalUpdater, и он настроен на попадание в файл, который просто запрашивает эту строку в базе данных и возвращает статус исходного процесса.
Так что это прекрасно работает...до тех пор, пока файл, предоставляющий обновления статуса, находится за пределами моего текущего приложения.Если я помещу файл в свое приложение, оно будет работать неправильно.Если я смотрю firebug, вызов PeriodicalUpdater ничего не возвращает, пока не завершится исходный вызов ajax, он просто зависает, как будто файл завис и ничего не возвращает.
Все это приложение работает внутри базовой структуры, которую мы используем.Ничего сумасшедшего, просто обрабатывает маршрутизацию, основные аспекты шаблонов и т. д.Итак, все эти функции/файлы находятся внутри этого приложения, и все эти вызовы ajax маршрутизируются через него.
Что может быть причиной подобного?
Решение
Может ли это быть из-за ограничения одновременные соединения, поддерживаемые браузером в конкретный домен?
Другие советы
Это вызвано сериализацией сеанса PHP.Данные сеанса блокируются до тех пор, пока процесс PHP для каждого запроса не завершит запись в них, поэтому дальнейшие запросы в том же сеансе будут стоять в очереди до тех пор, пока блокировка не будет снята.
Если вашим запросам AJAX требуется доступ к состоянию сеанса, зачитайте необходимую информацию, а затем используйте session_write_close()
как можно раньше в коде, чтобы снять эти блокировки.