Erste Schritte

Cron einrichten

Zwei Einträge. Beide sind nötig, und sie tun Verschiedenes. Pfad anpassen:

* * * * * cd /pfad/zu/fileshare && php artisan queue:work --stop-when-empty >> /dev/null 2>&1
0 3 * * * cd /pfad/zu/fileshare && php artisan fileshare:cleanup --force >> /dev/null 2>&1
Eintrag Was er tut Ohne ihn
queue:work Prüfsummen berechnen, Dateien ver- und entschlüsseln Bleibt jede Änderung des Verschlüsselungszustands hängen
fileshare:cleanup Abgelaufene Links samt Datei löschen, Chunk-Reste, alte Download- und Versandprotokolle und IP-Adressen entfernen Greift keine Aufbewahrungsfrist

Ohne --force ist fileshare:cleanup ein Testlauf: Er zeigt, was gelöscht würde, und verändert nichts. Führe ihn einmal von Hand aus, bevor du den Cron scharf schaltest.

Dauerhafter Worker statt Cron

Auf einem Server mit systemd ist ein laufender Worker die bessere Wahl als der Minuten-Cron — er nimmt Arbeit sofort an statt beim nächsten Minutenwechsel:

; /etc/systemd/system/fileshare-worker.service
[Unit]
Description=Fileshare Queue Worker
After=network.target

[Service]
User=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/fileshare/artisan queue:work --sleep=3 --tries=3 --timeout=3600

[Install]
WantedBy=multi-user.target

Das lange --timeout ist nötig: Das Verschlüsseln einer mehrere Gigabyte großen Datei dauert.

Nach jeder Aktualisierung php artisan queue:restart ausführen — sonst arbeiten laufende Worker mit dem alten Code weiter, und Fehler treten scheinbar zufällig auf.

Kontrolle

php artisan queue:failed

Listet fehlgeschlagene Hintergrundarbeiten. Ein Upload, der bei 100 % stehen bleibt, und ein „wird geändert …", das nicht verschwindet, stehen hier.

Quelle dieser Seite: docs/cron.md im Repository. Sie wird beim Bauen daraus erzeugt — Änderungen gehören in die Markdown-Datei, nicht in diese Seite.