redelivre / jaiminho

Jaiminho o entregador de emails
5 stars 4 forks source link

Enviar e-mail por cron opcional #2

Open jacsonp opened 8 years ago

jacsonp commented 8 years ago

Gostaria que o envio por wp-cron fosse opcional, envio pelo front fosse impossível para evitar as sobre cargas e/ou envios duplicados que já tivemos e ter a opção para enviar pelo cron do SO, ou seja, um php para chamar pelo cli que processe a fila. Na versão anterior do Sendpress, a função q realiza o disparo era: SendPress_Manager::send_email_from_queue.

jacsonp commented 8 years ago

Olha, tenho uma ideia de como fazer isso:

  1. Criar uma tabela global no WP, ou seja, que não dependa de blog-id para ser acessada;
  2. Jogar, blogid, data de disparo, id da news, etc na tabela toda vez q tiver um programão;
  3. Script lê e dispara seguindo a tabela.
cabelotaina commented 8 years ago

@jacsonp removi a opção de disparo imediato (now) e deixei apenas a agendada, que oferece a posibilidade de agendar emails de hora em hora, acredito que uma alternativa é permitir agendamentamentos mais espaçados de preferencia fora dos horarios de pico do site, assim não provocamos lentidão no uso da ferramenta. O que acha? Mais temos que definir quais serão estes horarios. Para isso podemos ate mesmo criar uma configuração em settings que permite atualizar os horarios de envio.

Acredito que assim podemos utilizar o cron do linux como esta em: https://premium.wpmudev.org/forums/topic/multisite-run-wp-cron-on-each-site

Ai vamos ver como fica a proposta acima:

1 e 2) neste caso não vamos precisar da tabela já que definimos o agendamento para horarios especificos e podemos ter o wp-cron ou o cron do linux rodando o wp-cron de tempos em tempos.

3) O cron do linux ou o wp-cron podem fazer esse papel usando o algoritmo do sendpress mesmo.

Tudo bem seguir por este caminho?

cabelotaina commented 8 years ago

@jacsonp conversou comigo explicou que a ideia é desabilitar o wp-cron para o sendpress, acredito que podemos fazer isso retirando todos os hooks para wp-schedule e wp-cron e colocando em outro cron que criasemos apenas para gerir os problemas do sendpress. Além disso depois podemos utilizar o cron do linux para ativar este novo wp-cron.

cabelotaina commented 7 years ago

Estou pensando em criar uma action que ao ser chamada desde a redelivre aciona o envio de mensagens para cada blog. O que acha @jacsonp?

cabelotaina commented 7 years ago

Tive uma ideia de fazer uma extenção do wp-cli que basicamente roda o envio de mensagens em todos os sites da rede e guarda em um log a saida... pode ser? Ai a gente chama no horario que a gente quiser isso pelo cron do linux. https://github.com/wp-cli/wp-cli

cabelotaina commented 7 years ago

Eu adicionei um comando que envia todas as mensagens na pilha em todos os blogs da rede. Ele pode ser utilizado pelo cron:

wp jaiminho sendemails

E acho que com este doc podemos fechar a tarefa:

https://www.bjornjohansen.no/wordpress-cron-wp-cli