Utilizando timers no PHP-GTK

Boas pessoal 😉

bom, estou aqui novamente para dar mais uma dica, e desta vez bem legal: Adicionando timers à uma aplicação. Um timer é uma função que fica sendo executada de tempo em tempo, sem "travar" o resto dela. Isso pode ser muito util quando se precisa enviar comandos de tempo em tempo, como o PING no protocolo IRC, ou verificar uma caixa de email de tempo em tempo, e muitas outras coisas.

O método que faz esta maravilha, é o timeout_add() da classe Gtk. Segue um exemplo de como utiliza-la:

$window  = new GtkWindow();
 
// Função do timer
function timer1() {
	print("ok\n");
	return true;
}

// Adiciona o timer, com delay de 1 segundo
Gtk::timeout_add(1000, 'timer1');

// Cria o sinal ao destruir
$window->connect_simple('destroy', array('gtk', 'main_quit'));

// Inicia a aplicação
$window->show_all();
Gtk::main();

Podemos remover um timer utilizando o método timeout_remove():

$window  = new GtkWindow();
$button  = new GtkButton('Iniciar');

// Função do timer
function timer1() {
	print("ok\n");
	return true;
}

// Callback do click do botão
function buttonClick() {
	global $timer1, $button;
	
	// Verifica se o timer esta ativo
	if($timer1 != NULL) {
	
		// Remove o timer
		Gtk::timeout_remove($timer1);
		$timer1 = NULL;
		$button->set_label('Iniciar');
	} else {
	
		// Adiciona o timer, com delay de 1 segundo
		$timer1 = Gtk::timeout_add(1000, 'timer1');
		$button->set_label('Parar');
	}
}

// Cria o sinal ao destruir
$window->connect_simple('destroy', array('gtk', 'main_quit'));
$button->connect_simple('clicked', 'buttonClick');

// Inicia a aplicação
$window->add($button);
$window->show_all();
Gtk::main();

Bom pessoal, essa é uma das coisas que pouco se comenta, e que é muito util quando se precisa executar funções de tempo em tempo.

Até a proxima dica 😉

4 comentários sobre “Utilizando timers no PHP-GTK

  1. Opa josé.

    Então, pode sim, usa uma variavel global, e dentro da função do timer, vc incrementa +1 (segundo)

    < ?php
        $segundos = 0;
    
        function cro()
        {
            global $segundos;
            $segundos++;
        }
    
        $timer1 = Gtk::timeout_add(1000, 'cro');
    ?>
    

    Assim, vc sempre terá a variavel $segundos com o tempo de execução do seu aplicativo

  2. Eu estou precisando criar um cronometro em tempo real que ao clikar ele reinicie aos 10 seg, pois to montando um campeonato de xadrez, para uma sala na escola irene dias para os fins de semana, e nao to conseguindo usaro comando no php, vc pode me dar uma ajuda….

    Prometi levar o sistema pronto ate o final do mes…

    se poder me mandar por email, meu email é > naguerreiroantigo@gmail.com

Os comentários estão encerrados.