Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

caixa de entrada com laravel

Olá. Tenho um projeto em Laravel onde preciso implementar uma caixa de e-mail com mensagens. Estou com dificuldades na parte de buscar as mensagens do banco (MySQL), pois o sistema será utilizado por muitas pessoas e não parece que irá funcionar corretamento se muitas pessoas fizerem requisições ao servidor constantemente em um curto espaço de tempo (de 1 em 1 minuto por exemplo). Gostaria de perguntar a respeito de alguma tecnologia ou técnica para esse tipo de situação, em que é preciso verificar a entrada de novas mensagens em tempo real. O laravel já possui algum recurso nesse sentido? Ou PHP possui? É preciso incluir mais alguma coisa no projeto?

Obrigado pela atenção.

4 respostas

Não entendi bem sua dúvida.

Se você quer ler e-mails, basta se conectar ao servidor SMTP. Laravel não tem nada a ver com isso.

Você pode fazer na mão: https://www.php.net/manual/en/book.imap.php

Ou utilizar algum componente que facilite um pouco, como por exemplo: https://packagist.org/packages/php-imap/php-imap

A minha situação é a seguinte:

  • Tenho uma aplicação web em Laravel;
  • O banco de dados MySQL possui uma tabela de 'documentos', cujas informações devem ser lidas por todos os usuário do sistema logados;
  • No momento de logar do usuário, uma query busca no banco de dados todas as informações da tabela 'documentos' e preenche a caixa de entrada daquele usuário (informações como conteúdo, assunto, remetente e etc);
  • A query é executada apenas no momento em que o usuário loga, assim, qualquer documento inserido na tabela após o login do usuário não será exibido para ele;
  • Meu objetivo é: Sempre que um novo documento é inserido na tabela de 'documentos', todas as caixas de entradas dos usuários logados são atualizadas automaticamente em tempo real, refletindo sempre o estado mais atual do banco de dados;
  • A solução que eu pensei foi re-executar a query de busca no banco de tempos em tempos para manter a caixa de entrada de documentos atualizada, porém isso seria ruim com um número elevado de usuários logados fazendo requisições no banco de 5 em 5 segundos por exemplo;

Quais abordagens podem ser feitas para resolver essa questão da caixa de entrada em tempo real?

solução!

Agora entendi. As soluções pra esse problema são bem avançadas. Honestamente, nunca implementei nada do tipo, apenas li sobre.

Recomendo dar uma olhada no protocolo Mercure. Parece promissor: https://github.com/dunglas/mercure

Ok. Obrigado, darei uma olhada aqui.