2017-12-14 12 views
0

Ich benutze Cron Job, um eine PHP-Datei zum Senden von Nachrichten auszuführen. Am Ende meiner PHP-Datei, die von Cron-Job-Befehl ausgeführt wird, werde ich unlink(__FILE__); hinzufügen.PHP Verknüpfung Funktion und Cron Job

Löscht diese Funktion die aktuelle Datei nach dem Senden aller Nachrichten?

Ich bin mir nicht sicher, deshalb frage ich, denn das Senden von Nachrichten wird einige Zeit benötigen und ich möchte, dass meine Datei nach dem Senden aller Nachrichten gelöscht wird und nicht in der Mitte davon.

Sekunde; Was passiert, wenn beim Senden von Nachrichten ein Fehler auftritt? Wie kann ich informiert werden, wenn ein Fehler aufgetreten ist? Weil die Funktion die PHP-Datei bereits gelöscht hat! Wie kann ich über die Fehler herausfinden, wenn es welche gibt?

+0

Was macht dich überhaupt auf die Fehler aufmerksam, wenn du die Verknüpfung der Datei aufhebst? Es ist wie die Vernichtung einer Bevölkerung und dann kümmern sie sich um ihre demographischen Statistiken. Es gibt keinen Punkt Fehler beim Aufzeichnen einer Datei, die nicht mehr existiert. Löschen Sie die Datei nicht. – Martin

Antwort

0

Dies ist nicht der Weg zu gehen. Das Erstellen von Funktionen, die auf dem Entfernen von Quellcode basieren, ist ein Weg, dem Sie nicht folgen möchten. Ein Durcheinander und eine andere Datei könnte gelöscht werden, eine ohne Backup (aber wir haben alle Backups, oder?;))

Stattdessen schlage ich vor, Sie aktualisieren Sie einfach Ihre Datenbank. Sie haben Ihre Nachrichten gespeichert. Nachdem jede Nachricht gesendet wurde, aktualisieren Sie die Datenbank und setzen sent=1. Das nächste Mal, wenn Sie dieses Skript ausführen, sollte es alle ignorieren, wo sent=1 und jetzt senden Sie keine Duplikate.
Sie können nun auch pro Meldung prüfen, ob ein Fehler aufgetreten ist und diese protokollieren. Und wenn alles gut gegangen ist, können Sie auch die DB aktualisieren, wenn die Nachricht gesendet wurde.


Um die eigentliche Frage zu beantworten: Ja sollte es. Es ist wahrscheinlich ein Timing oder ein Codierungsfehler. Was schwer zu debuggen ist, da sich die Datei selbst löscht;)

0

Ich weiß nicht, wie Sie diese Nachrichten senden, aber wenn Ihr Skript eine synchrone Methode verwendet (wie ein SMTP-Server), wird der Aufruf unlink() nach jedem Mal ausgeführt, wenn Ihr Skript sequentiell ausgeführt wird.

Für die Fehlerbehandlung würde ich vorschlagen, dass Sie sie in eine Datei oder eine Datenbank protokollieren. Sie können weit verbreitete Bibliotheken wie Monolog verwenden, um es leicht zu tun.