По-видимому, я использую
var x=ajax..... if(x){x.abort();}
но это не вызывает абортов внутри моего php-файла, который, кстати, хотя по умолчанию этот параметр установлен на ignore_user_abort (false)
что если соединение должно быть потеряно, сценарий не будет продолжать выполнение.
Проблема заключается в том, что, похоже, он продолжает выполнять код, хотя аякс на стороне клиента js прерывается.
Как выполнить через js успешный аборт как на стороне клиента, так и на стороне сервера php.
В большинстве случаев AJAX работает не так. Как только запрос будет отправлен на сервер, сервер начнет его выполнять. Даже если PHP был настроен на прекращение выполнения сценария, если соединение клиента было удалено, в конфигурации веб-сервера он не делает такую проверку до тех пор, пока на самом деле попытка отправки клиенту не будет отправлена. Поэтому, если вы выполняете типичный сценарий типа AJAX, где вы просто имеете одно выходное событие, прерывание на стороне клиента не будет иметь никакого эффекта на стороне сервера.
Если вам нужно подтвердить, что что-то было прервано, вам нужно отправить другой запрос, чтобы спросить, завершена ли ваша работа или нет. Это означает, что после вызова xhr.abort()
вам нужно отправить запрос на что-то вроде /abort/jobId
чтобы узнать, удалось ли прервать его до завершения обработки.
Не существует волшебного способа гарантировать, что скрипт PHP остановится сразу после вызова abort()
.