Frage

Ich führe ein Schleifenskript in der PHP -Befehlszeile aus, in dem E -Mails mit PHPMailer E -Mails an Kunden senden. Das Problem, das ich empfange, ist, dass das Befehlszeilenskript beendet, wenn der Phpmailer ein Falsch zurückgibt.

Hier ist das Skript 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..
}

Wenn die $mail->Send() Gibt ein Falsch zurück, das Skript stoppt und beendet sich. Ist dies ein erwartetes Verhalten von PHP in der Befehlszeile? Wenn dies der Fall ist, gibt es eine Möglichkeit, PHP zu sagen, dass er nicht aufhören soll, wenn es einen falschen erhält?

Vielen Dank für jede Hilfe.

War es hilfreich?

Lösung

Ich würde vermuten, dass das $mail->Send() Funktion (oder etwas ganz anderes) wirft einen Fehler, der die Ausführung Ihres Skripts stoppt.

Ich nehme an, dass die Werte auch in der Datenbank nicht aktualisiert werden? Dies ist der Fall, wenn ja. Führen Sie das Skript mit der Fehlerberichterstattung aus, um dies zu bestimmen.

error_reporting(E_ALL);
ini_set('display_errors', true);

Andere Tipps

Höchstwahrscheinlich ruft die Routine zur Fehlerbehandlung (im sonstigen Zweig) auf exit oder verursacht einen tödlichen Fehler, der PHP -Rettung durcheinander bringt.
Fügen Sie zwei Zeilen der Debug -Ausgabe hinzu, um zu überprüfen, ob das Skript eintritt, und verlässt den anderer Zweig (erfolgreich).

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');
        }
     [...]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top