Ir para conteúdo
  • Cadastre-se

[Guia] Agendamento de Eventos no MySql


LARS

Posts recomendados

Galera postei no meu blog (

O conteúdo está oculto, favor efetuar login ou se cadastrar!
) uma artigo bem interessante que pode ser reaproveitado no Lineage 2, por exemplo: remover contas com level abaixo de 40, etc... Muito útul e interessante, vale apena dar uma olhada ;)

 

Poucos trabalham com sistemas que "trabalham por conta própria" ainda mais online (sem um software que se starta no servidor...), mas é muito interessante acrecentar este conhecimento, que pode ser muito útil em sites de promoções:

 

Imagine, ter que expirar códigos após 24horas, de forma automática (códigos de validação e email, de promoções, de convites, enfim...) como vocês fariam? Muitos optam pelo CRON ou se disponível no servidor, automação HTTP, mas ambos pode-se dizer que é uma "gambiarra" caso tenhamos que utilizar-lo para executar somente querys.

 

Alguns bancos de dados permitem criar eventos agendados, ou seja, você programa o ano/mês/semana/dia/hora/minuto/.... quando deve iniciar, qual o intervalo de tempo que ele deve executar a query, enfim... Basicamente programar o banco p/ executar a query no horário definido.

 

Geralmente nestes casos não usamos apenas 1 query, é possível se agendar eventos p/ executar um insert ou um update por exemplo, mas caso você queira fazer aquelas bizarrices de insere ali, edita aqui e deleta lá fica mais conveniente criar uma Stored Procedure e falar-mos para o evento executar-la ;).

 

Bom, agora vamos ao que interessa:

 

A sintaxe do evento segue este padrão:

 

CREATE EVENT ‘Nome_do_evento’

ON SCHEDULE AT [quando deve se executar] + [intervalo] [valor inteiro] [tipo tempo (dia/mês/minuto/hora....)]

DO

[sua Query];

 

exemplo:

 

CREATE EVENT 'deletaNonValidados'

ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY

DO

 

DELETE FROM contas WHERE validado = false;

 

este evento vai de dia em dia executar contando do momento em que foi criado, uma queyr que vai deletar os usuários que não validaram suas contas.

 

Caso queira executar mais de uma query, só criar uma stored procedure e no lugar de: DELETE FROM contas WHERE validado = false;

 

por: CALL spDeleta; ficando desta forma:

 

CREATE EVENT 'deletaNonValidados'

ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY

DO

 

CALL spDeleta;

 

pronto :D

 

PS: O serviço de agendamento deve estar ativado, não adianta criar o evento se não ativar-lo, basta exercutar uma query:

 

SET GLOBAL event_scheduler = ON;

Documentação detalhada:

 

O conteúdo está oculto, favor efetuar login ou se cadastrar!

sign.jpg

<strong><em>Ustiur Games</em> - Lineage 2 Gracia Epilogue private server</strong> coming soon

<strong>http://www.ustiur.com</strong>

Link para o comentário
Compartilhar em outros sites






×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.