Maneira segura de enviar solicitação POST via Javascript

Estou enviando solicitações POST para um arquivo PHP mina através de um botão com a seguinte function:

function buttonFunction() { $.post("http://ipaddress/core/file.php",{username:username, password:pword, coins:coins}, function(data) { // Stuff }); } 

No entanto, descobri recentemente que, se o processo de arquivo / script PHP ainda estiver sendo executado (tentando obter o resultado / resposta resultante), e o usuário atualizará a página, o processo PHP ainda seria executado no servidor. Além disso, se o usuário decidiu clicar novamente no botão (depois de atualizar), haveria DOIS processos de PHP a partir do mesmo usuário no servidor (ou seja, se o primeiro ainda estava em execução):

Solicitação de cancelamento de POST do Javascript para repetir / atualizar (uso de alta CPU)

No entanto, encontrei o envio de dados POST com XMLHttpRequest com Javascript:

Enviar dados POST usando XMLHttpRequest

Então, digamos que eu envio o meu pedido POST dessa maneira, seria seguro dizer quando o usuário atualiza / encerra a página, a execução do PHP termina?

 function buttonFunction() { var http = new XMLHttpRequest(); var url = "get_data.php"; var params = "lorem=ipsum&name=binny"; http.open("POST", url, true); //Send the proper header information along with the request http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http.setRequestHeader("Content-length", params.length); http.setRequestHeader("Connection", "close"); http.onreadystatechange = function() {//Call a function when the state changes. if(http.readyState == 4 && http.status == 200) { alert(http.responseText); } } http.send(params); } 

No entanto, se isso também não funcionar, como posso corrigir esse problema (vários scripts executados em segundo plano do mesmo usuário)? Se essa correção esteja no arquivo PHP ou no próprio JavaScript, qualquer ajuda será apreciada.

Editar 1:

Solução possível?

E se eu usar XMLHttpRequest e abortar o pedido antes que a página seja descarregada?

 window.onbeforeunload = function(event) { http.abort(); };