Nachdem Harvey Hardware Network letzte Woche aufgrund vorübergehender Anforderungen auf eine neue Nachrichtenplattform umgestiegen war, wurde die ursprüngliche Nachrichtenplattform nicht vollständig eingestellt. Daher wurde nach Beginn der Nutzung der neuen Plattform ein Problem festgestellt wird immer auf den ursprünglichen Systeminhalt aktualisiert, was dazu führen kann, dass auf einen bestimmten Nachrichtenlink nicht normal zugegriffen werden kann. Das neue System hat die URL optimiert und die URL der Nachrichtenseite unterscheidet sich vom ursprünglichen System. Zuerst dachte ich, es läge daran, dass jemand noch das alte System nutzte, aber das Problem trat am nächsten Tag immer noch auf, also dachte ich, es könnte ein Problem mit dem alten System sein. Später habe ich nachgesehen und festgestellt, dass das Empire CMS-System dies getan hat Eine Standardaufgabe zum Aktualisieren der Homepage, daher habe ich sie abgebrochen. Danach wird die Website-Homepage normal aktualisiert.
Nachdem ich dieses Problem gelöst hatte, begann ich, mich für PHP-Aufgaben zu interessieren, die ich zuvor kennengelernt, aber noch nicht wirklich geübt hatte. Angesichts der Bedeutung dieser Funktion für die Entwicklung von Website-Systemen habe ich beschlossen, sie jetzt zu studieren und eine Reihe davon zu schreiben Ausgereifter Code für zukünftige Anwendungen.
Die erste besteht darin, online nach relevanten Informationen zu suchen. Durch das Lesen dieser Informationen weiß ich, dass PHP-Aufgaben grob in drei Kategorien unterteilt werden können.
Vom Server geplante Aufgaben
Der WIN-Server kann geplante Aufgaben direkt verwenden, um verwandte Anwendungen auszuführen, und der Linux-Server kann durch Hinzufügen geplanter Aufgaben in /etc/crontab implementiert werden.
Automatische Aufgabenausführung durch Endlosschleife
Erstellen Sie eine Programmdateiseite und legen Sie sie mit „ignore_user_abort“ so fest, dass sie nach dem Schließen der Browserseite ausführbar ist. Nach dem Ausführen der Programmseite wird dann immer automatisch der von Ihnen benötigte Aufgabenplan ausgeführt. Für normale PHP-Programmierer ist dieser Vorgang nicht zulässig, wenn sie nicht sicher genug sind, da eine Endlosschleife leicht zum Absturz des Servers führen kann.
Ausgelöste geplante Aufgaben
Von den verschiedenen Programmen, die ich kenne, wie Discuz, Empire CMS usw., verwenden sie alle diese Methode, um die geplanten Aufgaben des Systems auszuführen. Im Vergleich zu den beiden vorherigen Methoden ist dies die sicherste und einfachste.
Es gibt so viele Möglichkeiten, dass Sie beim Entwerfen eines Programms die am besten geeignete Programmiermethode basierend auf den tatsächlichen Anforderungen auswählen sollten. Lassen Sie uns anhand von Beispielen eine Einführung geben.
Das E-Magazin von AiLiterature.com wurde kurz nach dem Start der Website erstellt. Dabei handelt es sich um ein E-Magazin, das per E-Mail verschickt wird. Der Versand der neuesten Ausgabe des E-Magazins an die Postfächer der Abonnenten ist eine große Aufgabe Das Senden funktioniert offensichtlich nicht. Der Hauptgrund ist, dass es derzeit keinen eigenen Mailserver gibt, wie beispielsweise die Postfächer von News, Tencent und 163. Diese unterstützen zwar SMTP zum Versenden von E-Mails, erlauben jedoch nicht den Versand großer E-Mail-Batches. Die Bedingungen sind begrenzt. Daher kann diese Frage nur durch Programme gelöst werden.
Zunächst habe ich eine ausgelöste geplante Aufgabe ausgewählt, um zu verhindern, dass das Programm, das E-Mails sendet, die Erfahrung des Benutzers beim Besuch der Website beeinträchtigt, insbesondere die Geschwindigkeit beim Öffnen der Website-Seite. Ich habe mich für die Implementierung des Auslösers für Ajax entschieden. Fügen Sie der öffentlichen JS-Datei eine Triggerfunktion hinzu, und Benutzer können die E-Mail-Versandaufgabe auslösen, wenn sie eine beliebige Seite besuchen.
Um die Häufigkeit des E-Mail-Versands zu begrenzen und zu verhindern, dass diese aufgrund zu häufigen E-Mail-Versands vom Mailserver gesperrt werden, werden im Programm auch Zeitlimits festgelegt, mit denen zufällig eine Wartezeit zur Lösung des Problems generiert wird Das Senden von E-Mails ist kein festes Intervall. Tatsächlich ist das Intervall im Triggermodus von Natur aus ungewiss. Wenn die Website jedoch eine große Anzahl von Besuchen hat, können solche Probleme dennoch auftreten. Daher ist es sicherer, Einstellungen hinzuzufügen betrachten.
Trotz der oben genannten Maßnahmen wird in tatsächlichen Anwendungen immer noch festgestellt, dass dem Mailserver das Versenden von E-Mails untersagt wird, dies ist jedoch nicht dauerhaft untersagt. Die Möglichkeit, dieses Problem zu lösen, besteht darin, ein Array zum Speichern der SMTP-Parameter verschiedener Mail-Dienste zu erstellen. Wenn ein Mail-Server E-Mails nicht normal senden kann, springt er automatisch zu einem anderen Mail-Server.
In der Liste der gesammelten E-Mail-Adressen werden einige ungültige Adressen angezeigt. Wenn der E-Mail-Versand einmal fehlschlägt, wechseln Sie zu einem anderen E-Mail-Server und senden Sie ihn erneut. Wenn keiner der E-Mail-Adressen erfolgreich ist, setzen Sie diese E-Mail-Adresse auf „Wenn sie ungültig ist“. , werden in Zukunft keine E-Mails mehr an diese Adresse gesendet, wodurch die Effizienz der E-Mail-Adressliste verbessert und Zeit für den nächsten E-Mail-Versand gespart wird.
Einige Freunde sagen, dass ich zu geizig bin und zu wenig Code in dieser Art von Blog teile. Wenn wir im Internet nach Informationen suchen, werden wir tatsächlich feststellen, dass die von vielen Websites geteilten Codes nicht unbedingt praktisch sind, und manchmal sind wir es auch Aufgrund der Bezugnahme auf diese Codes verzögert sich die Zeit. Daher fasse ich bei der Zusammenfassung oft die Methoden zur Lösung des Problems zusammen und schreibe die wichtigsten technischen Parameter auf, damit ich bei zukünftigen ähnlichen Problemen Referenzinformationen haben kann. Wenn Sie diesbezüglich Fragen haben, können Sie mich per Nachricht oder E-Mail kontaktieren.
Der persönliche Bereich des Autors Happy Boy