Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tiago Rocha Sarno

Garantir execução de script ao clicar no [x] do browser

Recommended Posts

E ai pessoal do Imarters,

estou com um problema em uma aplicação de Web Chat onde o operador ao clicar no [x] do browser executa um script php que organiza o banco de dados para não haver inconsistências. Acontece que esse script as vezes é executado e as vezes parece não ser chamado. Alguém sabe dizer como eu poderia estar garantindo a execução de tal script? Abaixo segue os códigos utilizados conforme são solicitados.

 

Código inserido no Html principal da aplicação:

<body scroll=no onUnload="fechaAtendimento('<?=$cod_atendente;?>');">

 

 

Função javascript fechaAtendimento():

function fechaAtendimento(cod_atendente){
	window.location="../controle/operador_finaliza_operacao.php?source="+ Math.random() +"&cod_atendente="+cod_atendente;
}

 

Por fim o script PHP operador_finaliza_operacao.php:

<?PHP
require_once("../classes/ClasseChat.php");
require_once("../classes/ClasseAtendentes.php");
$objChat = new chat();
$objAtendente = new atendentes();
$cod_atendente = strip_tags($_GET['cod_atendente']);

$retorno=0;
while($retorno==0) 
  $retorno = $objChat->operador_finaliza_operacoes($cod_atendente);

$retorno=0;
$query = $objAtendente->buscaDados($cod_atendente);
$array = mysql_fetch_array($query);
$nome_atendente = $array['nome'];

while($retorno==0) 
  $retorno = $objChat->finaliza_atendimentos($nome_atendente);
?>

Obrigado,

Tiago Rocha Sarno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara; eu estava com a mesma dúvida; o que acontece é, existem funções do PHP que verificam se o IP do cara está conectado ainda em seu site;

mas não consegui faze-lo em servidores IIS Windows;

 

Então deixei com onUnload;

o problema do onUnload é que quando o cara da um refresh na página consta como onUnload.

 

 

 

Veja isto

Compartilhar este post


Link para o post
Compartilhar em outros sites

e ai Renato,

o problema que estou enfrentando não é bem esse. Já estou com a aplicação funcionando e chamando o script ao clicar no [x] do browser. O problema é que não sei o porque que este script as vezes é executado ao clicar no [x] e as vezes parece não ser executado de forma correta. O que procuro é uma maneira de garantir a boa execução deste script toda vez que clicar no [x] do browser. Feito isso, cumpro o papel quanto à aplicação. Valew ai pelo post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai pessoal,

parece que encontrei uma maneira para garantir a execução, não é a ideal mais esta funcionando.

Quando chamado o evento onUnload ou onBeforeUnload chamo uma função js que primeiramente realiza uma chamada window.location, chamando o script PHP que faz todo o tratamento final da aplicação e depois da chama window.open coloquei um alert() fazendo com que a tela pop-up não feche e assim não expire o tempo da página, retardando seu fechamento e garantindo a execução do script chamado antes no window.open.

 

Pronto! É 1/2 boca mais esta funcionando, vou fazer uns testes depois utilizando ajax. Se alguém tiver alguma dica ou sabe realmente como garantir a execução, please help us.

 

Valew. [HcK]

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai hinom,

obrigado pelas dicas. Pelo que entendi, deverei modificar no meu php.ini "ignore_user_abort de Off para On" e após isso, utilizar a função connection_aborted verificando se a mesma retorna 1. Caso verdadeiro realiza a finalização da aplicação. Seria isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

basta chamar logo na primeira linha.

 

<?php
ignore_user_abort( true );

// restante do script..
?>

 

Precisava disso ;) xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.