Скрипт командной строки PHP завершает работу на false - PullRequest
1 голос
/ 08 февраля 2010

Я запускаю скрипт цикла в командной строке PHP, который рассылает электронные письма клиентам, использующим PHPMailer. Проблема, которую я получаю, заключается в том, что скрипт командной строки завершается, когда PHPMailer возвращает false.

Вот псевдокод скрипта:

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..
}

Если $mail->Send() возвращает false, скрипт останавливается и завершается. Это ожидаемое поведение PHP в командной строке? Если это так, есть ли способ сказать PHP не останавливаться, когда он получает ложь?

Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 08 февраля 2010

Я думаю, что функция $mail->Send() (или что-то еще полностью) выдает ошибку, которая останавливает выполнение вашего скрипта.

Я так понимаю, значения не обновляются в базе данных? Это будет так, если так. Запустите сценарий с отчетом об ошибках, чтобы определить это.

error_reporting(E_ALL);
ini_set('display_errors', true);
1 голос
/ 08 февраля 2010

Скорее всего, процедура обработки ошибок (в ветви else) вызывает exit или вызывает фатальную ошибку, которая позволяет php выручить.
Добавьте две строки результатов отладки, чтобы проверить, входит ли сценарий в ветку else (успешно).

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');
        }
     [...]
...