Pode php ouvir uma mudança ou atualização do database mysql? … pensando em tempo real, pesquisa ao vivo aqui

Estou tentando pensar na melhor maneira de lidar com pesquisa em tempo real de um site. A única solução com a qual posso chegar é manter a verificação do servidor a cada poucos segundos por algo novo no database, mas isso não me parece muito pratico.

A partir de 5.0.2, o MySQL suporta triggersdores: http://dev.mysql.com/doc/refman/5.0/pt/triggers.html

Mas, infelizmente, não conheço o MySQL suficientemente bem para saber se você poderia fazer qualquer coisa “útil” neles para notificar o aplicativo (no Oracle, eu pensaria em xp_). Pelo menos, você poderia escrever uma linha em uma única tabela de auditoria para que você só deva pesquisar em um só lugar.

Não, não pode, porque o MySQL não pode. Você precisa usar outras tecnologias, possivelmente incluindo uma fila de mensagens ou um database de transmissão.

Eu tenho um aplicativo que trabalhei há 5-6 anos atrás agora. Eu estava procurando uma solução similar na época. Foi para o meu aplicativo pre-twitter – meu próprio desenvolvimento de sms para a página da web sem atualização. Eu tinha uma maneira que eu estava polling no momento … mas pelo menos eu não tive nenhuma atualização horrível da página. Além disso, eu não

Isso me levou ao servidor de cometas. Essa foi a minha resposta.

Fui levado a acreditar que o bate-papo do Gmail usava a verdadeira tecnologia de empurrão, bem como contra a polling. Espero que o leve à direção certa.

AFAIK, não há como contar ao MySQL para pingar seu script quando algo acontece lá.

Polling parece ser a única solução plausível …

Eu não joguei com ele, mas notei que a estrutura do Symfony introduziu a “notificação de events” … basicamente, toda vez que uma parte do aplicativo faz INSERT ou UPDATE, ela cria um evento e outras partes do código podem se registrar para “ouvir” events e triggersr.

Isso seria tudo no nível PHP, não no nível do database, mas acho que o que você está procurando.

Há um bom artigo sobre events symfony aqui: http://www.symfony-project.org/blog/2009/02/21/using-the-symfony-event-system

Você poderia usar algo como Gearman (que tem uma interface MySQL ) para produzir seu código php quando algo novo acontecer. Talvez você possa usar esses events para criar uma página estática com todas as informações mais recentes, e usar a pesquisa no lado do cliente para pegar essa página estática.

Ainda tenho usado o Gearman, por isso os detalhes de tal configuração estão além de mim.

mesmo se o php pudesse como você mostraria as atualizações para o usuário, você terá que consultar o servidor para mostrar os resultados.

e a única maneira é o que você já está pensando, consultando o servidor a cada 5 ou mais segundos,.