O script da linha de comando php sai
-
19-09-2019 - |
Pergunta
Estou executando um script de loop na linha de comando PHP, que envia e -mails para os clientes usando o Phpmailer. O problema que estou recebendo é que o script da linha de comando sai quando o phpmailer retorna um falso.
Aqui está o script pseudocode:
while(the loop is valid){
if(mail ID exists){
set_time_limit(30);
..compose mail..
if($mail->Send()){
..Mark as success in database..
usleep(10000);
} else {
..Mark as failure in database..
usleep(10000);
}
}
..continue loop..
}
Se o $mail->Send()
Retorna um falso, o script para e sai. Este é um comportamento esperado do PHP na linha de comando? Se for esse o caso, existe alguma maneira de dizer ao PHP para não parar quando recebe um falso?
Obrigado por qualquer ajuda.
Solução
Eu acho que o $mail->Send()
Função (ou algo mais completamente) está lançando um erro que está interrompendo a execução do seu script.
Pego que os valores também não estão sendo atualizados no banco de dados? Este será o caso, se assim for. Execute o script com o relatório de erros para determinar isso.
error_reporting(E_ALL);
ini_set('display_errors', true);
Outras dicas
Provavelmente a rotina de manuseio de erros (no ramo else) exit
ou causa um erro fatal que permite que o PHP rescique.
Adicione duas linhas de saída de depuração para verificar se o script entra e sai da filial else (com sucesso).
while(the loop is valid){
[...]
} else {
error_log('Debug: Send() failed. Start error handling');
..Mark as failure in database..
usleep(10000);
error_log('Debug: Send() failed. End error handling');
}
[...]