AJAX (прототип/php), запускающий 2 процесса ajax, зависает до тех пор, пока не завершится первый

StackOverflow https://stackoverflow.com/questions/805354

Вопрос

Этот вопрос является продолжением моего предыдущего: Предыдущие вопросы.

Поэтому я настроил свою страницу для инициирования вызова ajax для начала обработки некоторых записей.И после каждой записи обновляет строку в другой таблице, чтобы отслеживать статус этого процесса.После того, как будет сделан первый вызов ajax, у меня начнется еще один запуск.Это Ajax.PeriodicalUpdater, и он настроен на попадание в файл, который просто запрашивает эту строку в базе данных и возвращает статус исходного процесса.

Так что это прекрасно работает...до тех пор, пока файл, предоставляющий обновления статуса, находится за пределами моего текущего приложения.Если я помещу файл в свое приложение, оно будет работать неправильно.Если я смотрю firebug, вызов PeriodicalUpdater ничего не возвращает, пока не завершится исходный вызов ajax, он просто зависает, как будто файл завис и ничего не возвращает.

Все это приложение работает внутри базовой структуры, которую мы используем.Ничего сумасшедшего, просто обрабатывает маршрутизацию, основные аспекты шаблонов и т. д.Итак, все эти функции/файлы находятся внутри этого приложения, и все эти вызовы ajax маршрутизируются через него.

Что может быть причиной подобного?

Это было полезно?

Решение

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

Другие советы

Это вызвано сериализацией сеанса PHP.Данные сеанса блокируются до тех пор, пока процесс PHP для каждого запроса не завершит запись в них, поэтому дальнейшие запросы в том же сеансе будут стоять в очереди до тех пор, пока блокировка не будет снята.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top