Você não é registrado, por favor registre-se para ter acesso ao conteúdo completo.
Caso seja registrado, efetue login.
Esqueceu sua senha? Clique aqui
Recomendamos o uso do Mozilla Firefox para uma melhor visualização.    


Início Postados Hoje Marcar Fóruns Como Lidos Álbums Banidos SE Team Medalhas
Voltar   Secret Experience > Área L2J > [L2J] Tutoriais
Registrar Loteria VIPStaff SERegras do fórum Comunidade Arcade Postados Hoje Pesquisar Experience
   

Secret Experience.NET   Secret Experience Corporation - Welcome To The Real World
     Anúncios SE

 
 
Ferramentas do Tópico Modos de Exibição
Prev Post Anterior   Próximo Post Next
Antigo 31-07-2010, 11:15 PM   #1
[Guia] Agendamento de Eventos no MYSQL
lars lars está offline 31-07-2010, 11:15 PM

Galera postei no meu blog ([Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar] ) 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:

[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]

 
Avatar de lars
lars
Membro - Recruta
Registrado em: Dec 2008
Posts: 6
Visitas: 781
Os Seguintes 6 Usuários disseram Obrigado(a) para lars por gostarem deste post :
alessandroht (22-01-2011), Cratos (24-05-2011), leoneto (02-08-2010), mend3 (25-05-2011), RazerNaga (08-08-2010), SaraxD (31-07-2010)
Links Patrocinados
 


Regras para Posts
Você não pode postar novos tópicos
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar seus posts

Código [IMG] Sim
Código HTML Não

Ir para...


Horários baseados na GMT -3. Agora são 10:55 PM.