Ich weiß nichts über "Best Practice". Ich kenne die häufigsten Fehler.
Erster Fehler: DOS selbst
Sie verwenden den Webhandler, um den lang laufenden Job zu verarbeiten. Dies kann schlecht oder extrem schlecht sein, abhängig von Ihrem Prozentsatz an Treffern, die zu Jobs mit langer Laufzeit werden, wie lange sie ausgeführt werden und wie viel anhaltenden Datenverkehr Sie erhalten.
Sie möchten sicherstellen, dass Sie nicht mehr als einen Job mit langer Laufzeit innerhalb des Zeitraums erhalten, den dieser Job mit langer Laufzeit benötigt. Wenn Sie dies tun, DOS Sie selbst. Es wird auch schlimmer, je mehr Verkehr Sie erhalten, vorausgesetzt, der Prozentsatz und die Zeit bleiben konstant. Es ist eines dieser Probleme, das dem Verkehrswachstum selbst eine Grenze auferlegt.
Zweiter Fehler: Laichen vom Webhandler
Das Laichen eines Prozesses aus dem Webhandler, um einen lang laufenden Prozess zu handhaben, kann schwierig und daher auch fehleranfällig sein.
- Sie müssen sich korrekt vom Elternteil trennen, sonst wartet der Webhandler auf den Abschluss des Kindes.
- Wenn Sie ein Kind unter Unix teilen, erbt es offene Handles vom Elternteil. Diese werden automatisch geschlossen, sofern sie nicht überschrieben werden. Dies umfasst Dinge wie Datenbankverbindungen, Dateihandles und andere offene Netzwerkverbindungen. Alle werden geschlossen, wenn der untergeordnete Prozess abgeschlossen ist.
Optionen
Normalerweise at(1)
distanziere ich mich sauber vom Webhandler, ohne mich zu gabeln.
Sie können auch eine Polling-Implementierung mit verwenden cron
.
Sie können mit einem anderen Serverprozess kommunizieren, der die Verarbeitung übernimmt. , Dass die Kommunikation mit getan werden sockets
, pipes
oder höherer Ebene Abstraktionen wie ein RESTES HTTP - Aufruf oder Routing - Nachricht einer Warteschlange.