
Anleitungen im Zusammenhang mit Beach
Wie man ein benutzerdefiniertes Daemon-Skript ausführt
Du kannst deine eigenen Daemon-Skripte in einer Instanz laufen lassen, zum Beispiel um Ereignisschleifen zu überwachen oder Job-Warteschlangen auszuführen.
Übersicht
Beach unterstützt benutzerdefinierte Daemon-Skripte für ausgewählte Projektpläne. Daemon-Skripte können für lang laufende PHP-Prozesse verwendet werden, z. B. um eine Ereignisschleife zu überwachen oder eine Job-Warteschlange auszuführen. Beach sorgt dafür, dass dein Skript weiterläuft und versucht, es im Falle eines Absturzes oder Abbruchs sofort wieder zu starten. Wenn es ein paar Mal hintereinander fehlgeschlagen ist, versucht Beach erst beim nächsten Einsatz, es wieder zu starten.
Die Details
Erstelle einfach eine Datei namens beach-service-something .sh, wobei du "something" durch etwas Sinnvolles ersetzt. Übertrage die Datei in das Hauptverzeichnis deines Projekts und setze sie ein. Du kannst mehrere Skripte erstellen, achte nur darauf, dass ihre Dateinamen mit "beach-service-" beginnen.
Das folgende Skript überwacht eine Flowpack-Jobwarteschlange. Es hat ein paar interessante Details:
- je nachdem, ob die Variable MY_PROJECT_WORKER_SCRIPTS_ENABLE gesetzt ist, ist das Skript aktiv oder nicht. Auf diese Weise kannst du Daemon-Skripte pro Beach Instanz aktivieren oder deaktivieren
- der job:work-Befehl nach 10 Minuten oder wenn 10 Jobs verarbeitet wurden, beendet wird. Auf diese Weise kannst du Speicherlecks und andere Nebeneffekte von lang laufenden Prozessen in PHP vermeiden
#!/bin/bash
if [ "${MY_PROJECT_WORKER_SCRIPTS_ENABLE}" != "true" ] ; then
echo "$(basename "$0"): sleeping because worker scripts are disabled ..."
sleep 86400
exit 0
fi
exec /application/flow job:work --limit 10 --exit-after 600 MyJobQueue
Wichtig: Du solltest darauf achten, dass dein Skript nicht sofort beendet wird, denn das System wird versuchen, dein Skript neu zu starten. Auch wenn dein Skript nicht endlos neu gestartet wird, kann dies zu einer gewissen CPU-Last führen, die du vermeiden solltest.