PHP won't notice that the browser closed the connection unless it tries to output something (e.g. echo). If it fails to output something, the script will be terminated unless
ignore_user_abort is On.
So the script will terminate only if the following conditions are met:
- the script attempts to output something (because the script won't notice that the user aborted the connection until then)
- AND php's
ignore_user_abortsetting is off (if the setting is off, php will terminate the script if fails to output something)
You can avoid the script from terminating by enabling
You can use
connection_aborted() at anytime to check is the browser aborted the request.
A script can terminate unexpectedly for other reasons (e.g. max execution time, exception, etc); so you should make use of transactions, so that half-finished changes are canceled if the script terminates abnormally.