Я борюсь с чем-то.
У меня есть страница PHP, которая выполняет вызов ajax на другой странице с помощью jQuery $.ajax
. Он отправляет запрос async на страницу обработки, которая затем возвращает ответ.
Это отлично работает сейчас, но мы вносим некоторые изменения в бэкэнд, и обработка (хранимая процедура SQL), которая выполняется, теперь занимает намного больше времени, а также более 5 минут. Ожидание – это хорошо, потому что мы имеем дело с 200-миллиметровыми записями в SQL.
Дело в том, что мне нужно отправить запрос на страницу обработки и не ждать ответа. Страница обработки запускает хранимую процедуру в PHP следующим образом:
$query = $dbh2->prepare('exec sp_name :countID'); $query->bindParam('countID', $countID); $query->execute();
Теперь снова эта хранимая процедура занимает некоторое время, и нам не нужны результаты, которые будут представлены пользователю. Существует хотя и некоторый дополнительный PHP-код, который должен запускаться после хранимой процедуры, но снова ничего не нужно отправлять обратно в браузер.
Я пытаюсь выяснить способ, которым я могу позвонить на страницу обработки, и он запускает хранимую процедуру и другой код, но браузеру пользователя не нужно ждать ответа. Прямо сейчас, если попытка скопировать страницу слишком скоро, она в основном блокирует браузер некоторое время и не завершает обработку.
Любое понимание этого было бы замечательно.
Заранее благодарю за любую помощь.
Sequenzia, если я правильно понимаю, тогда я был здесь и нашел путь через эту трясину после многих исследований.
Несколько месяцев назад я дал ответ на аналогичный вопрос. К сожалению, OP и никто еще не принимал / не прокомментировал / не поставил / downvoted – nada.
И вот несколько полезных ссылок:
Запуск фонового скрипта (команда unix)
Как составить PHP $ shortopts и $ longopts
Это способ интерпретации параметров, переданных скрипту PHP при запуске из командной строки или из другого скрипта PHP с помощью shell-exec ()
Вы можете посмотреть настройку параметра timeout
для $.ajax()
. Установив тайм-аут, возможно, полсекунды или что-то еще, ajax просто перейдет в режим ожидания и перейдет в обработчик ошибок (если есть).