Banco de Dados MySQL Avisar o PhP

505 views
Skip to first unread message

Luiz Moraes

unread,
Mar 26, 2011, 10:26:14 AM3/26/11
to list...@googlegroups.com
Bom dia pessoal...
 
Gostaria de saber, se há como eu fazer algo, sempre que minha tabela receber um insert.
 
Por exemplo... Tenho uma página no php que todo segundo busca saber se a tabela teve alterações e trás os registros que foram alterados.
 
Gostaria que de alguma forma, minha página só fosse lá trazer as alterações, caso realmente houvesse uma alteração, ou seja, o banco de dados avisaria minha página, ai a página vai lá e busca os registros.
 
Utilizo php e MySQL, tem algo do gênero?

Obrigado desde já.

Odlanier

unread,
Mar 26, 2011, 10:37:50 AM3/26/11
to list...@googlegroups.com
Cria uma trigger que ao receber um insert, em uma tabela insere uma linha em outra tabela contendo as informações modificadas e então com php vc checa essa tabela e retorna essas informações.

Enviado através do meu BlackBerry® da Nextel


From: Luiz Moraes <luig...@gmail.com>
Date: Sat, 26 Mar 2011 11:26:14 -0300
Subject: [ PHP - Google ] Banco de Dados MySQL Avisar o PhP
--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
LISTA PHP > http://groups.google.com.br/group/listaphp
--
REVISTA PHP > http://www.revistaphp.com.br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================

Luiz Moraes

unread,
Mar 26, 2011, 11:06:37 AM3/26/11
to list...@googlegroups.com
Então, mas ai acaba dando na mesma, o php vai ter que ficar checando todo segundo para ver se teve uma inserção... Eu queria que o banco avisasse a página de alguma forma, não sei... Sem que eu tivesse que ficar checando de segundo em segundo... Por exemplo, como é feito esses leilão de 1 centavo estilo Mukirana? Eles só atualizam qdo tem inserção de lance, não é?

2011/3/26 Odlanier <dlanil...@gmail.com>

Rubens Takiguti Ribeiro

unread,
Mar 26, 2011, 11:49:29 AM3/26/11
to list...@googlegroups.com
Luiz,

Acredito que você tenha que checar periodicamente via ajax, mesmo. Não precisa ser a cada segundo. Acho que 5 segundos seja um valor razoável para o propósito.

A questão é que o ajax faz a requisição assincrona, recebe o resultado em um momento e, se quiser, pode realizar alguma operação sobre a página. É isso que você tem que fazer: só alterar a página se detectou alguma mudança. Se não houve mudança, simplesmente não faz nada. Este comportamento fica transparente ao usuário.

Rubens Takiguti Ribeiro
TecnoLivre - Cooperativa de Tecnologia e Soluções Livres
Bacharel em Ciência da Computação - UFLA
Zend Certified Engineer - PHP 5
http://rubsphp.blogspot.com/

Giolvani Matos

unread,
Mar 28, 2011, 11:12:22 AM3/28/11
to list...@googlegroups.com
Luiz, essa tecnologia existe cara!!!

Se chama comet ou ajax reverso. Acontece que vc faz a implementação via ajax mandando uma rquisiçao pro servidor, uma rqeuisição que nunca se fecha! Dae quando tiver alteração no teu servidor ele manda o resultado
pro teu ajax!!!

Bom, da uma estudada lá velho, o conceito é simples!. Procura pelos plugins com jquery!
http://www.google.com.br/search?hl=pt-BR&safe=off&rlz=1B3GGLL_pt-BRBR379BR379&q=reverse+ajax+jquery&aq=f&aqi=g1&aql=&oq=

Abs
Giolvani
Att.
Giolvani de Matos

welingt...@gmail.com

unread,
Mar 28, 2011, 12:45:23 PM3/28/11
to list...@googlegroups.com, Giolvani Matos
O que o Giovani Matos ta dizendo chama-se 'push'. Da uma olhada nesses caras:
http://www.pubnub.com/tutorial/javascript-push-api
http://www.ape-project.org/

Nunca utilizei nenhum dos dois, mas a ideia é o que o Giovani estava dizendo, vc manda uma requisição e ela demora um longo tempo, quando o servidor tem uma coisa nova ela retorna com a informação, se estourar o limite a requisição é reenviada à espera de alguma coisa, em uma arquitetura publisher-reader.

Abraço

Pedro Oliveira

unread,
Mar 26, 2011, 12:24:58 PM3/26/11
to list...@googlegroups.com
a verificação sempre vai ter que ser feita com um script php. Não tem problema quanto a isso porque o consumo de recursos é muito pequeno (melhor usar uma tabela auxiliar alterada com os triggers).
Para vc avisar a sua aplicação que houve uma alteração na BD, depende da sua arquitetura. Mas o uso de sockets é o mais eficiente nessas situações.
O uso de sockets em PHP, apesar de não ser muito usado, é muito simples e garante que a sua aplicação principal seja avisada em tempo real de qualquer alteração na BD (se o script de verificação fizer esse script convenientemente).
Eu uso tabelas auxiliares, alteradas por triggers nas tabelas principais e faço loops de 0,1s. Ou seja o script verifica 10 vezes por segundo se houve alguma alteração.
O consumo de processador é de 0,1%
(posteriormente fiz o socket server em Python, mas em PHP tb funcionava bem )


[]s Pedro Oliveira


--

Mark Gonçalves

unread,
Mar 28, 2011, 9:48:23 PM3/28/11
to list...@googlegroups.com
@All:
Amigos, creio que o Luiz quer algo que o Banco de dados avise o PHP de que houve alguma alteração, e não o PHP avise o Cliente.

@Luiz:
Sei que em SQL Server existe o trace, tenho procurado isso para mysql também há algum tempo, mas, não tenho achado, infelizmente.

Acredito que terá que se conformar em colocar um php rodando e pesquisando no bando a todo momento mesmo.

Mark Gonçalves


“Omnes cum Petro, ad Iesum, per Mariam!”
Algumas das maiores façanhas do mundo foram feitas por pessoas que não eram suficientemente espertas, para saber que elas eram impossíveis.

Meus profiles: LinkedInBlog RSSTwitter
Contato: Google Talk/marka...@gmail.com Skype/markapollo1982 MSN/markk...@hotmail.com

Luiz Moraes

unread,
Mar 30, 2011, 9:05:15 AM3/30/11
to list...@googlegroups.com
Obrigado a todos que responderam.
 
Por enquanto estou utilizando uma solução ruim, que é buscar no banco de dados de 1 em 1 segundo, mas agora vou trocar pela solução que o Giolvani e o Wellington proporam..
 
Aos demais, obrigado também por tentarem me ajudar.
 
Abraços a todos.

Reply all
Reply to author
Forward
0 new messages